Author: aschnell
Date: Thu Jul 24 10:36:30 2008
New Revision: 49374
URL: http://svn.opensuse.org/viewcvs/yast?rev=49374&view=rev
Log:
- use callback function to calculate resulting size
Modified:
branches/tmp/aschnell/part-redesign/storage/src/include/ep-lvm-dialogs.ycp
branches/tmp/aschnell/part-redesign/storage/src/include/ep-raid-dialogs.ycp
branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp
Modified: branches/tmp/aschnell/part-redesign/storage/src/include/ep-lvm-dialogs.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/storage/src/include/ep-lvm-dialogs.ycp?rev=49374&r1=49373&r2=49374&view=diff
==============================================================================
--- branches/tmp/aschnell/part-redesign/storage/src/include/ep-lvm-dialogs.ycp (original)
+++ branches/tmp/aschnell/part-redesign/storage/src/include/ep-lvm-dialogs.ycp Thu Jul 24 10:36:30 2008
@@ -152,13 +152,10 @@
integer pesize = 4*1024*1024;
list<string> pvs = [];
-
list<symbol> fields = StorageSettings::FilterTable([ `device, `udev_path, `udev_id, `size ]);
-
list<map> unused_pvs = filter(map pv, get_possible_pvs(target_map), { return pv["used_by"]:"" == ""; });
-
term contents = `VBox();
list<term> pesizes_list = maplist(integer i, Integer::RangeFrom(19, 26), {
@@ -168,7 +165,7 @@
contents = add(contents, `Left(`InputField(`id("vgname"), "Volume Group Name")));
contents = add(contents, `Left(`ComboBoxSelected(`id("pesize"), `opt(`editable), _("&Physical Extent Size"), pesizes_list, `id(pesize))));
- contents = add(contents, DevicesSelectionBox::Create(unused_pvs, [], fields,
+ contents = add(contents, DevicesSelectionBox::Create(unused_pvs, [], fields, nil,
_("Available Physical Volumes:"),
_("Selected Physical Volumes:")));
@@ -237,7 +234,7 @@
term contents = `VBox();
- contents = add(contents, DevicesSelectionBox::Create(unused_pvs, used_pvs, fields,
+ contents = add(contents, DevicesSelectionBox::Create(unused_pvs, used_pvs, fields, nil,
_("Available Physical Volumes:"),
_("Selected Physical Volumes:")));
Modified: branches/tmp/aschnell/part-redesign/storage/src/include/ep-raid-dialogs.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/storage/src/include/ep-raid-dialogs.ycp?rev=49374&r1=49373&r2=49374&view=diff
==============================================================================
--- branches/tmp/aschnell/part-redesign/storage/src/include/ep-raid-dialogs.ycp (original)
+++ branches/tmp/aschnell/part-redesign/storage/src/include/ep-raid-dialogs.ycp Thu Jul 24 10:36:30 2008
@@ -50,6 +50,13 @@
string device = data["device"]:"error";
list<string> devices = data["devices"]:[];
+ integer callback(list<map> devices)
+ {
+ integer sizeK = 0;
+ Storage::ComputeMdSize(symbolof(toterm(raid_type)), maplist(map device, devices, { return device["device"]:""; }), sizeK);
+ return sizeK;
+ }
+
list<symbol> fields = StorageSettings::FilterTable([ `device, `udev_path, `udev_id, `size ]);
map target_map = Storage::GetTargetMap();
@@ -78,15 +85,13 @@
))))
);
- contents = add(contents, DevicesSelectionBox::Create(unused_devices, used_devices, fields,
+ contents = add(contents, DevicesSelectionBox::Create(unused_devices, used_devices, fields, callback,
_("Available Devices:"),
_("Selected Devices:")));
MiniWorkflow::SetContents(Greasemonkey::Transform(contents), "TODO help");
MiniWorkflow::SetLastStep(false);
- DevicesSelectionBox::SetSizeAlgorithm(symbolof(toterm(raid_type)));
-
symbol widget = nil;
repeat
@@ -99,9 +104,11 @@
case `raid0:
case `raid1:
case `raid5:
+ {
raid_type = substring(tostring((symbol) UI::QueryWidget(`id(`raid_type), `Value)), 1);
- DevicesSelectionBox::SetSizeAlgorithm(symbolof(toterm(raid_type)));
- break;
+ DevicesSelectionBox::UpdateSelectedSize();
+ }
+ break;
case `next:
{
@@ -194,6 +201,13 @@
string raid_type = data["raid_type"]:"error";
list<string> devices_new = [];
+ integer callback(list<map> devices)
+ {
+ integer sizeK = 0;
+ Storage::ComputeMdSize(symbolof(toterm(raid_type)), maplist(map device, devices, { return device["device"]:""; }), sizeK);
+ return sizeK;
+ }
+
list<symbol> fields = StorageSettings::FilterTable([ `device, `udev_path, `udev_id, `size ]);
map target_map = Storage::GetTargetMap();
@@ -202,7 +216,7 @@
term contents = `VBox();
- contents = add(contents, DevicesSelectionBox::Create(unused_devices, used_devices, fields,
+ contents = add(contents, DevicesSelectionBox::Create(unused_devices, used_devices, fields, callback,
_("Available Devices:"),
_("Selected Devices:")));
Modified: branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp?rev=49374&r1=49373&r2=49374&view=diff
==============================================================================
--- branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp (original)
+++ branches/tmp/aschnell/part-redesign/storage/src/modules/DevicesSelectionBox.ycp Thu Jul 24 10:36:30 2008
@@ -18,7 +18,7 @@
list<map> devices = [];
- symbol size_algorithm = `sum;
+ integer(list<map>) selected_size_function = nil;
/**
@@ -47,35 +47,23 @@
}
- term UnselectedSizeTerm()
+ integer Sum(list<map> devices)
{
- list<map> unselected_devices = GetUnselectedDevices();
- integer size_k = Integer::Sum(maplist(map device, unselected_devices, { return device["size_k"]:0; }));
- return `Left(`Label(sformat(_("Total size: %1"), Storage::KByteToHumanString(size_k))));
+ return Integer::Sum(maplist(map device, devices, { return device["size_k"]:0; }));
}
- term SelectedSizeTerm()
+ term UnselectedSizeTerm(list<map> unselected_devices)
{
- list<map> selected_devices = GetSelectedDevices();
-
- integer size_k = 0;
- if (contains([ `raid0, `raid1, `raid5, `raid6, `raid10 ], size_algorithm))
- Storage::ComputeMdSize(size_algorithm, maplist(map device, selected_devices,
- { return device["device"]:"error"; }), size_k);
- else
- size_k = Integer::Sum(maplist(map device, selected_devices, { return device["size_k"]:0; }));
-
- return `Left(`Label(sformat(_("Resulting size: %1"), Storage::KByteToHumanString(size_k))));
+ integer size_k = Sum(unselected_devices);
+ return `Left(`Label(sformat(_("Total size: %1"), Storage::KByteToHumanString(size_k))));
}
- global void SetSizeAlgorithm(symbol new_size_algorithm)
+ term SelectedSizeTerm(list<map> selected_devices)
{
- size_algorithm = new_size_algorithm;
-
- UI::ReplaceWidget(`id(`unselected_rp), UnselectedSizeTerm());
- UI::ReplaceWidget(`id(`selected_rp), SelectedSizeTerm());
+ integer size_k = selected_size_function(selected_devices);
+ return `Left(`Label(sformat(_("Resulting size: %1"), Storage::KByteToHumanString(size_k))));
}
@@ -85,10 +73,12 @@
* Ordering of device list is irrelevant. Devices are ordered by StorageFields::IterateTargetMap.
*/
global term Create(list<map> unselected_devices, list<map> selected_devices, list<symbol> fields,
- string unselected_label, string selected_label)
+ integer(list<map>) new_selected_size_function, string unselected_label, string selected_label)
{
devices = flatten([ unselected_devices, selected_devices ]);
+ selected_size_function = new_selected_size_function != nil ? new_selected_size_function : Sum;
+
list<string> device_names = maplist(map device, devices, { return device["device"]:""; });
symbol Predicate(map disk, map partition)
@@ -103,10 +93,20 @@
list<string> selected = maplist(map device, selected_devices, { return device["device"]:""; });
- term ret = DualMultiSelectionBox::Create(header, content, selected, unselected_label, selected_label,
- UnselectedSizeTerm(), SelectedSizeTerm());
+ return DualMultiSelectionBox::Create(header, content, selected, unselected_label, selected_label,
+ UnselectedSizeTerm(unselected_devices), SelectedSizeTerm(selected_devices));
+ }
+
- return ret;
+ global void UpdateUnselectedSize()
+ {
+ UI::ReplaceWidget(`id(`unselected_rp), UnselectedSizeTerm(GetUnselectedDevices()));
+ }
+
+
+ global void UpdateSelectedSize()
+ {
+ UI::ReplaceWidget(`id(`selected_rp), SelectedSizeTerm(GetSelectedDevices()));
}
@@ -116,8 +116,8 @@
if (contains([`unselected, `selected, `add, `add_all, `remove, `remove_all], widget))
{
- UI::ReplaceWidget(`id(`unselected_rp), UnselectedSizeTerm());
- UI::ReplaceWidget(`id(`selected_rp), SelectedSizeTerm());
+ UpdateUnselectedSize();
+ UpdateSelectedSize();
}
}
}
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org