added escape key handler (#461)
Added escape key handler for drawer2type
This commit is contained in:
parent
6dbdb85aaf
commit
b05ad2392b
7 changed files with 90 additions and 8 deletions
|
@ -77,7 +77,16 @@ void PageController::closeWindow()
|
||||||
void PageController::keyPressEvent(Qt::Key key)
|
void PageController::keyPressEvent(Qt::Key key)
|
||||||
{
|
{
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case Qt::Key_Back: emit closePage();
|
case Qt::Key_Back:
|
||||||
|
case Qt::Key_Escape: {
|
||||||
|
if (m_drawerDepth) {
|
||||||
|
emit closeTopDrawer();
|
||||||
|
setDrawerDepth(getDrawerDepth() - 1);
|
||||||
|
} else {
|
||||||
|
emit escapePressed();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: return;
|
default: return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,3 +141,15 @@ void PageController::closeApplication()
|
||||||
{
|
{
|
||||||
qApp->quit();
|
qApp->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PageController::setDrawerDepth(const int depth)
|
||||||
|
{
|
||||||
|
if (depth >= 0) {
|
||||||
|
m_drawerDepth = depth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int PageController::getDrawerDepth()
|
||||||
|
{
|
||||||
|
return m_drawerDepth;
|
||||||
|
}
|
||||||
|
|
|
@ -87,6 +87,9 @@ public slots:
|
||||||
|
|
||||||
void closeApplication();
|
void closeApplication();
|
||||||
|
|
||||||
|
void setDrawerDepth(const int depth);
|
||||||
|
int getDrawerDepth();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void goToPage(PageLoader::PageEnum page, bool slide = true);
|
void goToPage(PageLoader::PageEnum page, bool slide = true);
|
||||||
void goToStartPage();
|
void goToStartPage();
|
||||||
|
@ -105,7 +108,7 @@ signals:
|
||||||
void showNotificationMessage(const QString &message);
|
void showNotificationMessage(const QString &message);
|
||||||
|
|
||||||
void showBusyIndicator(bool visible);
|
void showBusyIndicator(bool visible);
|
||||||
void enableTabBar(bool enabled);
|
void disableControls(bool disabled);
|
||||||
|
|
||||||
void hideMainWindow();
|
void hideMainWindow();
|
||||||
void raiseMainWindow();
|
void raiseMainWindow();
|
||||||
|
@ -113,12 +116,17 @@ signals:
|
||||||
void showPassphraseRequestDrawer();
|
void showPassphraseRequestDrawer();
|
||||||
void passphraseRequestDrawerClosed(QString passphrase);
|
void passphraseRequestDrawerClosed(QString passphrase);
|
||||||
|
|
||||||
|
void escapePressed();
|
||||||
|
void closeTopDrawer();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSharedPointer<ServersModel> m_serversModel;
|
QSharedPointer<ServersModel> m_serversModel;
|
||||||
|
|
||||||
std::shared_ptr<Settings> m_settings;
|
std::shared_ptr<Settings> m_settings;
|
||||||
|
|
||||||
bool m_isTriggeredByConnectButton;
|
bool m_isTriggeredByConnectButton;
|
||||||
|
|
||||||
|
int m_drawerDepth;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PAGECONTROLLER_H
|
#endif // PAGECONTROLLER_H
|
||||||
|
|
|
@ -25,6 +25,8 @@ Item {
|
||||||
property real expandedHeight
|
property real expandedHeight
|
||||||
property real collapsedHeight: 0
|
property real collapsedHeight: 0
|
||||||
|
|
||||||
|
property int depthIndex: 0
|
||||||
|
|
||||||
signal entered
|
signal entered
|
||||||
signal exited
|
signal exited
|
||||||
signal pressed(bool pressed, bool entered)
|
signal pressed(bool pressed, bool entered)
|
||||||
|
@ -36,6 +38,24 @@ Item {
|
||||||
signal closed
|
signal closed
|
||||||
signal opened
|
signal opened
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: PageController
|
||||||
|
|
||||||
|
function onCloseTopDrawer() {
|
||||||
|
if (depthIndex === PageController.getDrawerDepth()) {
|
||||||
|
if (isCollapsed) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
aboutToHide()
|
||||||
|
|
||||||
|
drawerContent.state = root.drawerCollapsed
|
||||||
|
depthIndex = 0
|
||||||
|
closed()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: root
|
target: root
|
||||||
|
|
||||||
|
@ -47,6 +67,8 @@ Item {
|
||||||
aboutToHide()
|
aboutToHide()
|
||||||
|
|
||||||
drawerContent.state = root.drawerCollapsed
|
drawerContent.state = root.drawerCollapsed
|
||||||
|
depthIndex = 0
|
||||||
|
PageController.setDrawerDepth(PageController.getDrawerDepth() - 1)
|
||||||
closed()
|
closed()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +80,8 @@ Item {
|
||||||
aboutToShow()
|
aboutToShow()
|
||||||
|
|
||||||
drawerContent.state = root.drawerExpanded
|
drawerContent.state = root.drawerExpanded
|
||||||
|
depthIndex = PageController.getDrawerDepth() + 1
|
||||||
|
PageController.setDrawerDepth(depthIndex)
|
||||||
opened()
|
opened()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,8 @@ import "../Config"
|
||||||
PageType {
|
PageType {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
Component.onCompleted: PageController.enableTabBar(false)
|
Component.onCompleted: PageController.disableControls(true)
|
||||||
Component.onDestruction: PageController.enableTabBar(true)
|
Component.onDestruction: PageController.disableControls(false)
|
||||||
|
|
||||||
SortFilterProxyModel {
|
SortFilterProxyModel {
|
||||||
id: proxyServersModel
|
id: proxyServersModel
|
||||||
|
|
|
@ -14,8 +14,8 @@ import "../Config"
|
||||||
PageType {
|
PageType {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
Component.onCompleted: PageController.enableTabBar(false)
|
Component.onCompleted: PageController.disableControls(true)
|
||||||
Component.onDestruction: PageController.enableTabBar(true)
|
Component.onDestruction: PageController.disableControls(false)
|
||||||
|
|
||||||
property bool isTimerRunning: true
|
property bool isTimerRunning: true
|
||||||
property string progressBarText: qsTr("Usually it takes no more than 5 minutes")
|
property string progressBarText: qsTr("Usually it takes no more than 5 minutes")
|
||||||
|
|
|
@ -13,6 +13,8 @@ import "../Components"
|
||||||
PageType {
|
PageType {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
|
property bool isControlsDisabled: false
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: PageController
|
target: PageController
|
||||||
|
|
||||||
|
@ -45,6 +47,18 @@ PageType {
|
||||||
stackView.pop()
|
stackView.pop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onDisableControls(disabled) {
|
||||||
|
isControlsDisabled = disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
function onEscapePressed() {
|
||||||
|
if (isControlsDisabled || busyIndicator.visible) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
PageController.closePage()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
|
|
|
@ -38,8 +38,8 @@ PageType {
|
||||||
tabBar.enabled = !visible
|
tabBar.enabled = !visible
|
||||||
}
|
}
|
||||||
|
|
||||||
function onEnableTabBar(enabled) {
|
function onDisableControls(disabled) {
|
||||||
tabBar.enabled = enabled
|
tabBar.enabled = !disabled
|
||||||
}
|
}
|
||||||
|
|
||||||
function onClosePage() {
|
function onClosePage() {
|
||||||
|
@ -70,6 +70,21 @@ PageType {
|
||||||
tabBarStackView.pop()
|
tabBarStackView.pop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onEscapePressed() {
|
||||||
|
if (!tabBar.enabled || busyIndicator.visible) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var pageName = tabBarStackView.currentItem.objectName
|
||||||
|
if ((pageName === PageController.getPagePath(PageEnum.PageShare)) ||
|
||||||
|
(pageName === PageController.getPagePath(PageEnum.PageSettings))) {
|
||||||
|
PageController.goToPageHome()
|
||||||
|
tabBar.previousIndex = 0
|
||||||
|
} else {
|
||||||
|
PageController.closePage()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue