Ext.define('PVE.qemu.OSTypeInputPanel', {
- extend: 'PVE.panel.InputPanel',
+ extend: 'Proxmox.panel.InputPanel',
alias: 'widget.pveQemuOSTypePanel',
onlineHelp: 'qm_os_settings',
insideWizard: false,
xclass: 'Ext.app.ViewController',
control: {
'combobox[name=osbase]': {
- change: 'onOSBaseChange'
+ change: 'onOSBaseChange',
},
'combobox[name=ostype]': {
afterrender: 'onOSTypeChange',
- change: 'onOSTypeChange'
- }
+ change: 'onOSTypeChange',
+ },
+ 'checkbox[reference=enableSecondCD]': {
+ change: 'onSecondCDChange',
+ },
},
onOSBaseChange: function(field, value) {
- this.lookup('ostype').getStore().setData(PVE.Utils.kvm_ostypes[value]);
+ let me = this;
+ me.lookup('ostype').getStore().setData(PVE.Utils.kvm_ostypes[value]);
+ if (me.getView().insideWizard) {
+ let isWindows = value === 'Microsoft Windows';
+ let enableSecondCD = me.lookup('enableSecondCD');
+ enableSecondCD.setVisible(isWindows);
+ if (!isWindows) {
+ enableSecondCD.setValue(false);
+ }
+ }
},
onOSTypeChange: function(field) {
var me = this, ostype = field.getValue();
me.setWidget('pveBusSelector', targetValues.busType);
me.setWidget('pveNetworkCardSelector', targetValues.networkCard);
- me.setWizardHiddenValue('qemuScsiController', targetValues.scsihw);
+ me.setWidget('CPUModelSelector', targetValues.cputype);
+ var scsihw = targetValues.scsihw || '__default__';
+ this.getViewModel().set('current.scsihw', scsihw);
+ this.getViewModel().set('current.ostype', ostype);
},
setWidget: function(widget, newValue) {
// changing a widget is safe only if ComponentQuery.query returns us
if (widgets.length === 1) {
widgets[0].setValue(newValue);
} else {
- throw 'non unique widget :' + widget + ' in Wizard';
+ // ignore multiple disks, we only want to set the type if there is a single disk
}
},
- setWizardHiddenValue: function(property, newValue) {
- var wizards = Ext.ComponentQuery.query('pveQemuCreateWizard ');
- if (wizards.length === 1) {
- wizards[0][property] = newValue;
+ onSecondCDChange: function(widget, value, lastValue) {
+ let me = this;
+ let vm = me.getViewModel();
+ let updateVMConfig = function() {
+ let widgets = Ext.ComponentQuery.query('pveMultiHDPanel');
+ if (widgets.length === 1) {
+ widgets[0].getController().updateVMConfig();
+ }
+ };
+ if (value) {
+ // only for windows
+ vm.set('current.ide0', "some");
+ vm.notify();
+ updateVMConfig();
+ me.setWidget('pveBusSelector', 'scsi');
+ me.setWidget('pveNetworkCardSelector', 'virtio');
} else {
- throw 'non unique wizard, unable to set ' + property;
+ vm.set('current.ide0', "");
+ vm.notify();
+ updateVMConfig();
+ me.setWidget('pveBusSelector', 'scsi');
+ let ostype = me.lookup('ostype').getValue();
+ var targetValues = PVE.qemu.OSDefaults.getDefaults(ostype);
+ me.setWidget('pveBusSelector', targetValues.busType);
}
+ },
+ },
+
+ setNodename: function(nodename) {
+ var me = this;
+ me.lookup('isoSelector').setNodename(nodename);
+ },
+
+ onGetValues: function(values) {
+ if (values.ide0) {
+ let drive = {
+ media: 'cdrom',
+ file: values.ide0,
+ };
+ values.ide0 = PVE.Parser.printQemuDrive(drive);
}
+ return values;
},
- initComponent : function() {
+ initComponent: function() {
var me = this;
- /*jslint confusion: true */
me.items = [
{
xtype: 'displayfield',
value: gettext('Guest OS') + ':',
- hidden: !me.insideWizard
+ hidden: !me.insideWizard,
},
{
xtype: 'combobox',
editable: false,
queryMode: 'local',
value: 'Linux',
- store: Object.keys(PVE.Utils.kvm_ostypes)
+ store: Object.keys(PVE.Utils.kvm_ostypes),
},
{
xtype: 'combobox',
reference: 'ostype',
fieldLabel: gettext('Version'),
value: 'l26',
- allowBlank : false,
+ allowBlank: false,
editable: false,
queryMode: 'local',
valueField: 'val',
fields: ['desc', 'val'],
data: PVE.Utils.kvm_ostypes.Linux,
listeners: {
- datachanged: function (store) {
+ datachanged: function(store) {
var ostype = me.lookup('ostype');
var old_val = ostype.getValue();
- if (!me.insideWizard && old_val && store.find('val', old_val) != -1) {
+ if (!me.insideWizard && old_val && store.find('val', old_val) !== -1) {
ostype.setValue(old_val);
} else {
ostype.setValue(store.getAt(0));
}
- }
- }
- }
- }
+ },
+ },
+ },
+ },
];
- /*jslint confusion: false */
+
+ if (me.insideWizard) {
+ me.items.push(
+ {
+ xtype: 'proxmoxcheckbox',
+ reference: 'enableSecondCD',
+ isFormField: false,
+ hidden: true,
+ checked: false,
+ boxLabel: gettext('Add additional drive for VirtIO drivers'),
+ listeners: {
+ change: function(cb, value) {
+ me.lookup('isoSelector').setDisabled(!value);
+ me.lookup('isoSelector').setHidden(!value);
+ },
+ },
+ },
+ {
+ xtype: 'pveIsoSelector',
+ reference: 'isoSelector',
+ name: 'ide0',
+ nodename: me.nodename,
+ insideWizard: true,
+ hidden: true,
+ disabled: true,
+ },
+ );
+ }
me.callParent();
- }
+ },
});
Ext.define('PVE.qemu.OSTypeEdit', {
- extend: 'PVE.window.Edit',
+ extend: 'Proxmox.window.Edit',
- initComponent : function() {
- var me = this;
+ subject: 'OS Type',
- Ext.apply(me, {
- subject: 'OS Type',
- items: [{ xtype: 'pveQemuOSTypePanel' }]
- });
+ items: [{ xtype: 'pveQemuOSTypePanel' }],
+
+ initComponent: function() {
+ var me = this;
me.callParent();
var value = response.result.data.ostype || 'other';
var osinfo = PVE.Utils.get_kvm_osinfo(value);
me.setValues({ ostype: value, osbase: osinfo.base });
- }
+ },
});
- }
+ },
});