Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Q
qtquickcontrols-nemo
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
NemoMobile
qtquickcontrols-nemo
Commits
4f8d9d1f
Commit
4f8d9d1f
authored
Jun 01, 2017
by
eekkelund
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Keyboard] Move application upwards in case of input area is clicked and keyboard appeares
parent
2862bfd7
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
345 additions
and
262 deletions
+345
-262
ApplicationWindow.qml
src/controls/ApplicationWindow.qml
+345
-262
No files found.
src/controls/ApplicationWindow.qml
View file @
4f8d9d1f
/*
* Copyright (C) 2013 Andrea Bernabei <and.bernabei@gmail.com>
* Copyright (C) 2013 Jolla Ltd.
* Copyright (C) 2017 Eetu Kahelin
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
...
...
@@ -28,15 +30,14 @@ import QtQuick.Controls.Styles.Nemo 1.0
NemoWindow
{
id
:
root
width
:
320
height
:
640
property
alias
header
:
toolBar
/*! \internal */
default
property
alias
data
:
contentArea
.
data
property
alias
pageStack
:
stackView
property
alias
initialPage
:
stackView
.
initialItem
property
bool
applicationActive
:
Qt
.
application
.
active
property
alias
orientation
:
contentArea
.
uiOrientation
readonly
property
int
isUiPortrait
:
orientation
==
Qt
.
PortraitOrientation
||
orientation
==
Qt
.
InvertedPortraitOrientation
...
...
@@ -140,21 +141,29 @@ NemoWindow {
Item
{
id
:
backgroundItem
anchors.centerIn
:
parent
// NOTE: Using Screen.height/width will cause issues when the app is not fullscreen (e.g. when testing using Qt desktop)
// because in that case the app window will be smaller but the content will still be for fullscreen size
width
:
__transpose
?
Screen
.
height
:
Screen
.
width
height
:
__transpose
?
Screen
.
width
:
Screen
.
height
anchors.fill
:
parent
rotation
:
rotationToTransposeToPortrait
()
Item
{
id
:
clipping
z
:
1
width
:
parent
.
width
-
(
isUiLandscape
?
stackView
.
panelSize
:
0
)
height
:
parent
.
height
-
(
isUiPortrait
?
stackView
.
panelSize
:
0
)
clip
:
stackView
.
panelSize
>
0
//This is the rotating item
Item
{
id
:
contentArea
width
:
parent
.
width
height
:
parent
.
height
anchors.centerIn
:
parent
transform
:
Scale
{
id
:
contentScale
property
bool
animationRunning
:
xAnim
.
running
||
yAnim
.
running
Behavior
on
xScale
{
NumberAnimation
{
id
:
xAnim
;
duration
:
100
}
}
Behavior
on
yScale
{
NumberAnimation
{
id
:
yAnim
;
duration
:
100
}
}
}
property
int
_horizontalDimension
:
parent
?
parent
.
width
:
0
property
int
_verticalDimension
:
parent
?
parent
.
height
:
0
...
...
@@ -175,8 +184,31 @@ NemoWindow {
anchors.left
:
root
.
isUiPortrait
?
parent
.
left
:
toolBar
.
right
anchors.bottom
:
parent
.
bottom
property
real
panelSize
:
0
property
real
previousImSize
:
0
property
real
imSize
:
!
root
.
applicationActive
?
0
:
(
isUiPortrait
?
(
root
.
_transpose
?
Qt
.
inputMethod
.
keyboardRectangle
.
width
:
Qt
.
inputMethod
.
keyboardRectangle
.
height
)
:
(
root
.
_transpose
?
Qt
.
inputMethod
.
keyboardRectangle
.
height
:
Qt
.
inputMethod
.
keyboardRectangle
.
width
))
onImSizeChanged
:
{
if
(
imSize
<=
0
&&
previousImSize
>
0
)
{
imShowAnimation
.
stop
()
imHideAnimation
.
start
()
}
else
if
(
imSize
>
0
&&
previousImSize
<=
0
)
{
imHideAnimation
.
stop
()
imShowAnimation
.
to
=
imSize
imShowAnimation
.
start
()
}
else
{
panelSize
=
imSize
}
previousImSize
=
imSize
}
clip
:
true
Component.onCompleted
:
stackInitialized
=
true
Component.onCompleted
:
{
stackInitialized
=
true
}
//IMPORTANT: this property makes it so that at app startup we wait for the initial page to be pushed
//before determining the initial ui orientation (see the states logic below)
//If we don't use this, the orientation will change first time based on NemoWindow's allowedOrientation,
...
...
@@ -261,6 +293,28 @@ NemoWindow {
}
}
SequentialAnimation
{
id
:
imHideAnimation
PauseAnimation
{
duration
:
200
}
NumberAnimation
{
target
:
stackView
property
:
'
panelSize
'
to
:
0
duration
:
200
easing.type
:
Easing
.
InOutQuad
}
}
NumberAnimation
{
id
:
imShowAnimation
target
:
stackView
property
:
'
panelSize
'
duration
:
200
easing.type
:
Easing
.
InOutQuad
}
}
Header
{
...
...
@@ -328,6 +382,13 @@ NemoWindow {
width
:
parent
.
width
rotation
:
0
}
AnchorChanges
{
target
:
clipping
anchors.top
:
parent
.
top
anchors.left
:
parent
.
left
anchors.right
:
undefined
anchors.bottom
:
undefined
}
},
State
{
name
:
'
Landscape
'
...
...
@@ -346,6 +407,13 @@ NemoWindow {
width
:
parent
.
height
rotation
:
-
90
}
AnchorChanges
{
target
:
clipping
anchors.top
:
undefined
anchors.left
:
undefined
anchors.right
:
parent
.
right
anchors.bottom
:
parent
.
bottom
}
},
State
{
name
:
'
PortraitInverted
'
...
...
@@ -364,6 +432,13 @@ NemoWindow {
width
:
parent
.
width
rotation
:
0
}
AnchorChanges
{
target
:
clipping
anchors.top
:
undefined
anchors.left
:
undefined
anchors.right
:
parent
.
right
anchors.bottom
:
parent
.
bottom
}
},
State
{
name
:
'
LandscapeInverted
'
...
...
@@ -382,6 +457,13 @@ NemoWindow {
width
:
parent
.
height
rotation
:
-
90
}
AnchorChanges
{
target
:
clipping
anchors.top
:
undefined
anchors.left
:
parent
.
left
anchors.right
:
undefined
anchors.bottom
:
parent
.
bottom
}
}
]
...
...
@@ -433,5 +515,6 @@ NemoWindow {
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment