]>
Commit | Line | Data |
---|---|---|
16041408 | 1 | Ext.define('PVE.qemu.CDInputPanel', { |
ef4ef788 | 2 | extend: 'Proxmox.panel.InputPanel', |
85806e47 | 3 | alias: 'widget.pveQemuCDInputPanel', |
16041408 DM |
4 | |
5 | insideWizard: false, | |
6 | ||
7 | onGetValues: function(values) { | |
8 | var me = this; | |
9 | ||
53e3ea84 | 10 | var confid = me.confid || values.controller + values.deviceid; |
2a4971d8 | 11 | |
16041408 DM |
12 | me.drive.media = 'cdrom'; |
13 | if (values.mediaType === 'iso') { | |
14 | me.drive.file = values.cdimage; | |
15 | } else if (values.mediaType === 'cdrom') { | |
16 | me.drive.file = 'cdrom'; | |
17 | } else { | |
18 | me.drive.file = 'none'; | |
19 | } | |
20 | ||
21 | var params = {}; | |
2a4971d8 | 22 | |
16041408 | 23 | params[confid] = PVE.Parser.printQemuDrive(me.drive); |
2a4971d8 TL |
24 | |
25 | return params; | |
16041408 DM |
26 | }, |
27 | ||
28 | setVMConfig: function(vmconfig) { | |
29 | var me = this; | |
30 | ||
31 | if (me.bussel) { | |
32 | me.bussel.setVMConfig(vmconfig, 'cdrom'); | |
33 | } | |
34 | }, | |
35 | ||
36 | setDrive: function(drive) { | |
37 | var me = this; | |
38 | ||
39 | var values = {}; | |
40 | if (drive.file === 'cdrom') { | |
41 | values.mediaType = 'cdrom'; | |
42 | } else if (drive.file === 'none') { | |
43 | values.mediaType = 'none'; | |
44 | } else { | |
45 | values.mediaType = 'iso'; | |
fc7b556d | 46 | values.cdimage = drive.file; |
16041408 DM |
47 | } |
48 | ||
49 | me.drive = drive; | |
50 | ||
51 | me.setValues(values); | |
52 | }, | |
53 | ||
54 | setNodename: function(nodename) { | |
55 | var me = this; | |
56 | ||
fc7b556d | 57 | me.isosel.setNodename(nodename); |
16041408 DM |
58 | }, |
59 | ||
8058410f | 60 | initComponent: function() { |
16041408 DM |
61 | var me = this; |
62 | ||
63 | me.drive = {}; | |
64 | ||
65 | var items = []; | |
66 | ||
67 | if (!me.confid) { | |
42902182 | 68 | me.bussel = Ext.create('PVE.form.ControllerSelector', { |
48eb9401 | 69 | withVirtIO: false, |
16041408 DM |
70 | }); |
71 | items.push(me.bussel); | |
72 | } | |
73 | ||
74 | items.push({ | |
75 | xtype: 'radiofield', | |
76 | name: 'mediaType', | |
77 | inputValue: 'iso', | |
78 | boxLabel: gettext('Use CD/DVD disc image file (iso)'), | |
79 | checked: true, | |
80 | listeners: { | |
81 | change: function(f, value) { | |
82 | if (!me.rendered) { | |
83 | return; | |
84 | } | |
fc7b556d | 85 | var cdImageField = me.down('pveIsoSelector'); |
9d7d6ed7 | 86 | cdImageField.setDisabled(!value); |
8058410f | 87 | if (value) { |
9d7d6ed7 TM |
88 | cdImageField.validate(); |
89 | } else { | |
90 | cdImageField.reset(); | |
91 | } | |
f6710aac TL |
92 | }, |
93 | }, | |
16041408 DM |
94 | }); |
95 | ||
2a4971d8 | 96 | |
fc7b556d | 97 | me.isosel = Ext.create('PVE.form.IsoSelector', { |
16041408 | 98 | nodename: me.nodename, |
fc7b556d DC |
99 | insideWizard: me.insideWizard, |
100 | name: 'cdimage', | |
16041408 DM |
101 | }); |
102 | ||
fc7b556d | 103 | items.push(me.isosel); |
16041408 DM |
104 | |
105 | items.push({ | |
106 | xtype: 'radiofield', | |
107 | name: 'mediaType', | |
108 | inputValue: 'cdrom', | |
f6710aac | 109 | boxLabel: gettext('Use physical CD/DVD Drive'), |
16041408 DM |
110 | }); |
111 | ||
112 | items.push({ | |
113 | xtype: 'radiofield', | |
114 | name: 'mediaType', | |
115 | inputValue: 'none', | |
f6710aac | 116 | boxLabel: gettext('Do not use any media'), |
16041408 DM |
117 | }); |
118 | ||
5f38c3fc | 119 | me.items = items; |
16041408 DM |
120 | |
121 | me.callParent(); | |
f6710aac | 122 | }, |
16041408 DM |
123 | }); |
124 | ||
125 | Ext.define('PVE.qemu.CDEdit', { | |
9fccc702 | 126 | extend: 'Proxmox.window.Edit', |
16041408 | 127 | |
97f7773b TL |
128 | width: 400, |
129 | ||
8058410f | 130 | initComponent: function() { |
16041408 DM |
131 | var me = this; |
132 | ||
133 | var nodename = me.pveSelNode.data.node; | |
97f7773b TL |
134 | if (!nodename) { |
135 | throw "no node name specified"; | |
16041408 DM |
136 | } |
137 | ||
ef725143 | 138 | me.isCreate = !me.confid; |
16041408 DM |
139 | |
140 | var ipanel = Ext.create('PVE.qemu.CDInputPanel', { | |
141 | confid: me.confid, | |
f6710aac | 142 | nodename: nodename, |
16041408 DM |
143 | }); |
144 | ||
145 | Ext.applyIf(me, { | |
146 | subject: 'CD/DVD Drive', | |
8058410f | 147 | items: [ipanel], |
16041408 DM |
148 | }); |
149 | ||
150 | me.callParent(); | |
2a4971d8 | 151 | |
16041408 | 152 | me.load({ |
8058410f | 153 | success: function(response, options) { |
16041408 DM |
154 | ipanel.setVMConfig(response.result.data); |
155 | if (me.confid) { | |
156 | var value = response.result.data[me.confid]; | |
157 | var drive = PVE.Parser.parseQemuDrive(me.confid, value); | |
158 | if (!drive) { | |
159 | Ext.Msg.alert('Error', 'Unable to parse drive options'); | |
160 | me.close(); | |
161 | return; | |
162 | } | |
163 | ipanel.setDrive(drive); | |
164 | } | |
f6710aac | 165 | }, |
16041408 | 166 | }); |
f6710aac | 167 | }, |
16041408 | 168 | }); |