21
21
import SystemSettings 1.0
22
22
import Ubuntu.Components 1.3
23
23
import Ubuntu.Components.ListItems 1.3 as ListItem
24
import Ubuntu.Connectivity 1.0
27
property string prevOnlineModem: parent.prevOnlineModem
30
model: Connectivity.modems
31
sort.property: "Index"
32
sort.order: Qt.AscendingOrder
29
function getNameFromIndex (index) {
30
var dummy = i18n.tr("Cellular data")
32
return i18n.tr("Off");
33
} else if (index > 0) {
34
return sims[index - 1].title;
36
text: i18n.tr("Cellular data")
40
checked: Connectivity.mobileDataEnabled
41
enabled: simSelector.currentSim !== null
43
Connectivity.mobileDataEnabled = checked
45
* We do this binding here to workaround bug:
46
* https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1494387
48
* The bug causes the checked binding to be overridden if plain onTriggered is used.
50
checked = Qt.binding(function() {
51
return Connectivity.mobileDataEnabled
38
height: childrenRect.height
40
SettingsItemTitle { text: i18n.tr("Cellular data:") }
42
57
ListItem.ItemSelector {
47
// create a model of 'off' and all sim paths
49
sims.forEach(function (sim) {
54
64
delegate: OptionSelectorDelegate {
55
objectName: "use" + modelData
56
text: getNameFromIndex(index)
65
objectName: "use/ril_" + (model.Index - 1)
68
return sims[model.Index - 1].name + " (" +
69
(model.Sim.PrimaryPhoneNumber !== "" ?
70
model.Sim.PrimaryPhoneNumber : model.Sim.Imsi) + ")"
73
return i18n.tr("No SIM detected")
81
return i18n.tr("Insert a SIM, then restart the device.")
84
enabled: model.Sim !== null
59
if (prevOnlineModem) {
60
return model.indexOf(prevOnlineModem);
87
property var currentSim : null
88
onSelectedIndexChanged: {
89
if (selectedIndex === -1) {
62
return [true, sims[0].connMan.powered, sims[1].connMan.powered]
92
currentSim = model.get(selectedIndex).Sim
95
onCurrentSimChanged: {
96
if (currentSim !== null) {
97
roaming.checked = Qt.binding(function() {
98
return currentSim.DataRoamingEnabled
103
function setSelectedIndex() {
104
if (Connectivity.simForMobileData === null) {
105
simSelector.selectedIndex = -1
109
for (var i = 0; i < sortedModems.count; i++) {
110
if (sortedModems.get(i).Sim === Connectivity.simForMobileData) {
111
simSelector.selectedIndex = i
115
simSelector.selectedIndex = -1
119
onSimForMobileDataUpdated: {
120
simSelector.setSelectedIndex()
123
Component.onCompleted: {
128
// @bug: https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1577351
129
// Connectivity.simForMobileData = currentSim
131
* There is a bug in onTriggered that causes it to be fired *before* selectedIndex has been updated
132
* and thus there is no way of knowing what index was actually selected by the user.
134
* This is worked around below by using onDelegateClicked which gives us the missing index.
67
137
onDelegateClicked: {
68
// power all sims on or off
69
sims.forEach(function (sim) {
70
sim.connMan.powered = (model[index] === sim.path);
138
var sim = sortedModems.get(index).Sim
142
Connectivity.simForMobileData = sim
75
146
ListItem.Standard {
77
147
text: i18n.tr("Data roaming")
78
enabled: use.selectedIndex !== 0
80
id: dataRoamingControl
81
150
objectName: "roaming"
83
property bool serverChecked: poweredSim && poweredSim.connMan.roamingAllowed
84
onServerCheckedChanged: checked = serverChecked
85
Component.onCompleted: checked = serverChecked
88
poweredSim.connMan.roamingAllowed = checked;
151
enabled: simSelector.currentSim !== null && dataSwitch.checked
152
checked: simSelector.currentSim ? simSelector.currentSim.DataRoamingEnabled : false
154
simSelector.currentSim.DataRoamingEnabled = !checked