New QOrbiter Setup
In order to create a proper Splash / Setup screen, certain key things but be implemented. This is a guide to those functions and properties that must be set for a new QOrbiter to be created.
Properties
Property Name | Property Type | Signal | Description | Example |
---|---|---|---|---|
sRouterIP | string | none | The internal router ip as read from the config.xml. Will be set to 192.168.80.1 Also accepts hostname instead of ip in string format | This populates the TextInput element with the routerip
TextInput { id: routerip width: 80 text: srouterip font.pixelSize: 10 font.family: "Droid Sans" fillColor: "grey" anchors.verticalCenter: parent.verticalCenter } |
extip | string | none | The external router ip as read from the config.xml. Will be set to fill.me.in.com by default Also accepts hostname instead of ip in string format | This populates the TextInput element with the extip
TextInput { id: ext_routerip width: 80 text: extip font.pixelSize: 10 font.family: "Droid Sans" // onTextChanged: setRouterIp(routerip.text) fillColor: "grey" anchors.verticalCenter: parent.verticalCenter visible: false } |
orbiterList | ListModel | window.showList() | ListModel of existing orbiter. It gets populated after QOrbiter initially connects to the router. | To Utilize, set as the 'model' property for the ListModel you intend to show it in.
Properties:
ListView{ id:existing_orbiters height: scaleY(35) width: scaleX(55) clip: true anchors.centerIn: rectangle2 model:orbiterList delegate: Rectangle{ id:existing_orbiter_delegate height: scaleY(5) width: existing_orbiters.width color: "slategrey" border.color: "white" border.width: 1 Column { height: childrenRect.height width: childrenRect.width anchors.centerIn: parent Text { id: orbiter_label text: qsTr("Orbiter:")+ label font.pixelSize: 12 wrapMode: Text.WrapAtWordBoundaryOrAnywhere } Text { id: dev_num text:qsTr("Device:")+ i_device_number font.pixelSize: 12 font.italic: true wrapMode: Text.WrapAtWordBoundaryOrAnywhere } } MouseArea { anchors.fill: parent onClicked: window.qmlSetupLmce(i_device_number, routerip.text) } } } |
users | ListModel | none: see window.showSetup() function definition | ListModel of existing users. It is populated when the function showSetup() is called. | To Utilize, set as the 'model' property for the ListModel you intend to show it in.
Properties:
ListView{ id:usersView height: 75 width: parent.width orientation: ListView.Horizontal spacing: 20 model:users Component.onCompleted: currentIndex = -1 delegate:Rectangle{ height:newOrbiterSetupContainer.height *.15 width: newOrbiterSetupContainer.width *.09 radius:10 border.color:usersView.currentIndex === index ? midnightBlue : orangeRed color: usersView.currentIndex === index ? deYork : "white" Text { text: dataTitle font.pointSize: 12 wrapMode: Text.WrapAtWordBoundaryOrAnywhere width: parent.width *.75 anchors.centerIn: parent } MouseArea{ anchors.fill: parent onClicked: { usersView.currentIndex = index selectedUser.text = "You Selected: "+ dataTitle } hoverEnabled: true } } } |
rooms | ListModel | window.showSetup() | ListModel of existing orbiter. It gets populated after QOrbiter initially connects to the router. | To Utilize, set as the 'model' property for the ListModel you intend to show it in.
Properties:
ListView{ id:roomsView height: 75 width: parent.width orientation: ListView.Horizontal model:rooms contentHeight: newOrbiterSetupContainer.height *.15 contentWidth: newOrbiterSetupContainer.width *.09 spacing:20 Component.onCompleted: currentIndex = -1 delegate: Rectangle{ height:newOrbiterSetupContainer.height *.15 width: newOrbiterSetupContainer.width *.09 radius:10 border.color:roomsView.currentIndex === index ? midnightBlue : orangeRed color: roomsView.currentIndex === index ? deYork : "white" Text { text: dataTitle font.pointSize: 12 wrapMode: Text.WrapAtWordBoundaryOrAnywhere width: parent.width *.75 anchors.centerIn: parent } MouseArea{ anchors.fill: parent onClicked: { roomsView.currentIndex = index selectedRoom.text = dataTitle } hoverEnabled: true } } } |
Splash Page
This page is not the traditional Splash screen. Instead of it being a loading screen, it should contain the following
- A loader to switch between the Connection Screen and the new QOrbiter setup screen
- logic to change screens and anything else you want done in the the setup screens before connecting to the router.
Connection Screen
This screen should be the first loaded by the Splash.qml and contain the neccesary elements to establish a connection to thr router. This includes:
- Text entry for device number
- text entry from internal ip / hostname
- text entry box for external ip / hostname.
- Button to connect
- Button to start new QOrbiter setup
New Orbiter Screen
This screen is where you would display setup options like the
- users
- rooms
- languages (not available yet)
and so forth. Once the user had made selections, you start the setup process by calling the window.setupNewOrbiter() function from qml. This will initiate the process of starting creating the orbiter and making it ready to run.
Functions
These functions are part of the setup process
Function Name | Parameters | Signal | Description | Example |
---|---|---|---|---|
window.showSetup() | none | setupNewOrbiter() | Called when a user wants to create a new QOrbiter. It causes the dcerouter to populate the setup list models (users, rooms, etc) and you can use the emitted signal to change screens to the setup screen if so desired. | In the default skin, it is placed in the 'on completed' handler of the SetupNewOrbiter.qml page. This way it loads as soon as the page has completed.
Component.onCompleted: window.showSetup() |
window.setupNewOrbiter() |
*int room *int skin *int lang *int width *int height |
none | Called after the user selects all of the start up variables and hits a 'complete' or 'done' button. These variables must be passed to the function otherwise it will fail. | window.setupNewOrbiter(selectedUser.currentIndex, selectedRoom.currentIndex, 1, 1, appW, appH) |