aboutsummaryrefslogtreecommitdiff
path: root/qml/main.qml
diff options
context:
space:
mode:
authorAdrian Kummerlaender2015-08-07 16:29:35 +0200
committerAdrian Kummerlaender2015-08-07 16:29:35 +0200
commit3d618159831b6379f2aefc27d8f744fd46a9f3d2 (patch)
tree822278bc639ee62f09121880db14bca9692dbda8 /qml/main.qml
parent359c878cbfe97dafad328c748ae744b38a7dbd5b (diff)
downloadMetaTerm-3d618159831b6379f2aefc27d8f744fd46a9f3d2.tar
MetaTerm-3d618159831b6379f2aefc27d8f744fd46a9f3d2.tar.gz
MetaTerm-3d618159831b6379f2aefc27d8f744fd46a9f3d2.tar.bz2
MetaTerm-3d618159831b6379f2aefc27d8f744fd46a9f3d2.tar.lz
MetaTerm-3d618159831b6379f2aefc27d8f744fd46a9f3d2.tar.xz
MetaTerm-3d618159831b6379f2aefc27d8f744fd46a9f3d2.tar.zst
MetaTerm-3d618159831b6379f2aefc27d8f744fd46a9f3d2.zip
Extracted terminal list into separate component
Diffstat (limited to 'qml/main.qml')
-rw-r--r--qml/main.qml106
1 files changed, 4 insertions, 102 deletions
diff --git a/qml/main.qml b/qml/main.qml
index 2b81fe2..3f3b5a9 100644
--- a/qml/main.qml
+++ b/qml/main.qml
@@ -26,111 +26,13 @@ ApplicationWindow {
ColumnLayout {
anchors.fill: parent
- Flickable {
- id: terminalListFlickable
+ TerminalList {
+ id: terminalList
+
+ state: state
Layout.fillHeight: true
Layout.fillWidth: true
-
- boundsBehavior: Flickable.StopAtBounds
- contentHeight: terminalList.height
- contentWidth: parent.width
- pixelAligned: true
-
- Column {
- id: terminalList
-
- property int activeItem : 0
- property int itemIndex : 0
-
- anchors {
- left: parent.left
- right: parent.right
- }
-
- spacing: 10
-
- onHeightChanged: scrollTo(activeItem)
-
- function onItemExecuted(index) {
- if ( index === (children.length - 1) ) {
- createItem();
- }
- }
-
- function createItem() {
- var terminalItem = Qt.createComponent("qrc:/TerminalItem.qml");
- var instantiateTerminal = function() {
- var instance = terminalItem.createObject(terminalList, {
- "index": itemIndex,
- "width": terminalListFlickable.width
- });
- instance.onExecuted.connect(onItemExecuted);
-
- ++itemIndex;
- }
-
- if ( terminalItem.status === Component.Ready ) {
- instantiateTerminal();
- } else {
- terminalItem.statusChanged.connect(instantiateTerminal);
- }
- }
-
- function scrollTo(index) {
- if ( terminalList.height >= terminalListFlickable.height ) {
- var offset = children[index].y
- + (children[index].height / 2)
- - (terminalListFlickable.height / 2);
-
- var bound = terminalList.height
- - terminalListFlickable.height;
-
- if ( offset < 0 ) {
- terminalListFlickable.contentY = 0;
- } else if ( offset >= bound ) {
- terminalListFlickable.contentY = bound;
- } else {
- terminalListFlickable.contentY = offset;
- }
- }
- }
-
- function selectItem(index) {
- children[activeItem].deselect();
- children[index ].select();
-
- activeItem = index;
-
- scrollTo(index);
- }
-
- function selectNext() {
- if ( activeItem < (children.length - 1) ) {
- selectItem(activeItem + 1);
- } else {
- state.enterInsertMode();
- }
- }
-
- function selectPrev() {
- if ( activeItem > 0 ) {
- selectItem(activeItem - 1);
- }
- }
-
- function focusCurrent() {
- children[activeItem].forceActiveFocus();
- }
-
- function unfocusCurrent() {
- children[activeItem].unfocus();
- }
-
- function getCurrent() {
- return children[activeItem];
- }
- }
}
CommandInput {