Consolidate input logic into BrowserView

This commit is contained in:
2022-09-03 03:24:02 -04:00
parent 628f02831e
commit 912ebc57ce
4 changed files with 85 additions and 101 deletions
+17 -19
View File
@@ -3,16 +3,20 @@ import QtQuick 2.12
import "./BrowserView"
Row {
anchors.fill: parent
property int selectedView: 0
property int selectedProvider: 0
property var db
Sidebar {
id: sidebar
maximized: parent.selectedView == 0
providers: database.Providers
maximized: selectedView == 0
selectedElement: selectedProvider
providers: db.Providers
}
ContentView {
id: view
providers: database.Providers
viewSelected: selectedView == 1
selectedElement: selectedProvider
providers: db.Providers
}
function mod(n, m) {
return ((n % m) + m) % m;
@@ -21,24 +25,18 @@ Row {
if (selectedView == 0) {
if (event.key == Qt.Key_Right) {
selectedView = 1;
view.viewSelected = true
}
sidebar.Keys.pressed(event);
if (event.key == Qt.Key_Down) {
view.currentIndex = mod(view.currentIndex + 1, view.providers.length)
//view.viewSelected = true
} else if (event.key == Qt.Key_Down) {
selectedProvider = mod(selectedProvider + 1, db.Providers.length)
} else if (event.key == Qt.Key_Up) {
view.currentIndex = mod(view.currentIndex - 1, view.providers.length)
selectedProvider = mod(selectedProvider - 1, db.Providers.length)
} else {
return
}
if (event.key == Qt.Key_Return) {
console.log("Enter pressed")
mainTabView.currentIndex = 1
parent.children[1].children[0].play("./test1.mkv")
}
} else {
event.accepted = true;
}
else if (selectedView == 1) {
view.Keys.pressed(event);
}
event.accepted = true;
}
}
+59 -64
View File
@@ -1,88 +1,84 @@
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 1.4
import Ikinuki.Client 1.0
import "./ContentView"
TabView {
StackLayout {
id: tabView
property var providers
property bool viewSelected: false
property bool viewSelected
property int selectedElement
state: viewSelected ? "selected" : "deselected"
property int xSelect: 0
property int ySelect: 0
//width: viewSelected ? parent.width * 0.95 : parent.width * 0.8
width: parent.width * viewSelected ? 0.95 : 0.8
height: parent.height
property var maxElements: providers.length
tabsVisible: false
Repeater {
model: providers
Tab {
Rectangle {
color: "#22282A"
Row {
Item {
height: 10
width: 40
}
Column {
Row {
Item {
height: parent.height
width: 16
}
Column {
spacing: 20
Item {
height: 20
width: parent.width
}
Text {
text: elementColumn.children[ySelect].provider.getShow(xSelect).title
font.pointSize: 30
color: "#cdd7d9"
}
Text {
text: elementColumn.children[ySelect].provider.getShow(xSelect).year
font.pointSize: 15
color: "#99afb4"
}
Text {
text: elementColumn.children[ySelect].provider.getShow(xSelect).description
font.pointSize: 13
color: "#cdd7d9"
width: tabView.parent.width * 0.6
wrapMode: Text.WordWrap
maximumLineCount: 4
elide: Text.ElideRight
}
}
}
Rectangle {
color: "#22282A"
Row {
Item {
height: 10
width: 40
}
Column {
Row {
Item {
height: 40
width: parent.width
height: parent.height
width: 16
}
Column {
id: elementColumn
spacing: 20
Element {
title: "In Progress"
provider: modelData
repeaterModel: modelData.inProgress
elemSelected: viewSelected && (0 == ySelect)
xIndex: xSelect
Item {
height: 20
width: parent.width
}
Element {
title: "Recently Added"
provider: modelData
repeaterModel: modelData.recentlyAdded
elemSelected: viewSelected && (1 == ySelect)
xIndex: xSelect
Text {
text: elementColumn.children[ySelect].provider.getShow(xSelect).title
font.pointSize: 30
color: "#cdd7d9"
}
Text {
text: elementColumn.children[ySelect].provider.getShow(xSelect).year
font.pointSize: 15
color: "#99afb4"
}
Text {
text: elementColumn.children[ySelect].provider.getShow(xSelect).description
font.pointSize: 13
color: "#cdd7d9"
width: tabView.parent.width * 0.6
wrapMode: Text.WordWrap
maximumLineCount: 4
elide: Text.ElideRight
}
}
}
Item {
height: 40
width: parent.width
}
Column {
id: elementColumn
spacing: 20
Element {
title: "In Progress"
provider: modelData
repeaterModel: modelData.inProgress
elemSelected: viewSelected && (0 == ySelect)
xIndex: xSelect
}
Element {
title: "Recently Added"
provider: modelData
repeaterModel: modelData.recentlyAdded
elemSelected: viewSelected && (1 == ySelect)
xIndex: xSelect
}
}
}
@@ -116,10 +112,8 @@ TabView {
]
Keys.onPressed: (event)=> {
console.log(Qt.Key_Left);
if (event.key == Qt.Key_Left) {
if (xSelect == 0) {
viewSelected = false;
parent.selectedView = 0;
} else {
xSelect--;
@@ -131,5 +125,6 @@ TabView {
} else if (event.key == Qt.Key_Up) {
ySelect--;
}
event.accepted = true;
}
}
+2 -17
View File
@@ -7,14 +7,12 @@ import "./Sidebar"
Rectangle {
id: rect
property var providers
property bool maximized: true
property int selectedElement: 0
property var max_elements: providers.length
property bool maximized
property int selectedElement
width: parent.width * 0.2
height: parent.height
color: "#22282A"
state: maximized ? "maximized" : "minimized"
//color: "#0a3d4a"
Column {
anchors.fill: parent
Header {}
@@ -53,17 +51,4 @@ Rectangle {
}
}
]
function mod(n, m) {
return ((n % m) + m) % m;
}
Keys.onPressed: (event)=> {
// Handle scrolling
if (event.key == Qt.Key_Down) {
selectedElement = mod(selectedElement + 1, max_elements);
}
else if (event.key == Qt.Key_Up) {
selectedElement = mod(selectedElement - 1, max_elements);
}
event.accepted = true;
}
}
+7 -1
View File
@@ -24,10 +24,16 @@ ApplicationWindow {
BrowserView {
id: browserView
focus: true
db: database
}
PlayerView {
id: playerView
anchors.fill: parent
}
Keys.onPressed: (event)=> {
if (event.key == Qt.Key_Return) {
currentIndex = 1
playerView.children[0].play("./test1.mkv")
}
}
}
}