@@ -45,6 +45,7 @@ class _ResourcesDetailsState extends ConsumerState<ResourcesDetails> {
4545    final  stopped =  ref.watch (vmInfoProvider (widget.name).select ((info) {
4646      return  info.instanceStatus.status ==  Status .STOPPED ;
4747    }));
48+     final  daemonInfo =  ref.watch (daemonInfoProvider);
4849
4950    if  (! stopped) editing =  false ;
5051
@@ -53,45 +54,66 @@ class _ResourcesDetailsState extends ConsumerState<ResourcesDetails> {
5354            'CPUs ${cpus ?.toString () ?? '…' }' ,
5455            style:  TextStyle (fontSize:  16 ),
5556          )
56-         :  CpusSlider (
57-             key:  Key ('cpus-$cpus ' ),
58-             initialValue:  cpus,
59-             onSaved:  (value) {
60-               if  (value ==  null  ||  value ==  cpus) return ;
61-               ref.read (cpusProvider.notifier).set ('$value ' ).onError (
62-                   ref.notifyError ((error) =>  'Failed to set CPUs : $error ' ));
63-             },
57+         :  daemonInfo.when (
58+             data:  (info) =>  CpusSlider (
59+               key:  Key ('cpus-$cpus ' ),
60+               initialValue:  cpus,
61+               maxCpus:  info.cpus.toInt (),
62+               onSaved:  (value) {
63+                 if  (value ==  null  ||  value ==  cpus) return ;
64+                 ref
65+                     .read (cpusProvider.notifier)
66+                     .set ('$value ' )
67+                     .onError (ref.notifyError ((error) =>  'Failed to set CPUs : $error ' ));
68+               },
69+             ),
70+             loading:  () =>  CircularProgressIndicator (),
71+             error:  (error, stack) =>  Text ('Error: $error ' ),
6472          );
6573
6674    final  ramResource =  ! editing
6775        ?  Text (
6876            'Memory ${ram .map (humanReadableMemory ) ?? '…' }' ,
6977            style:  TextStyle (fontSize:  16 ),
7078          )
71-         :  RamSlider (
72-             key:  Key ('ram-$ram ' ),
73-             initialValue:  ram,
74-             onSaved:  (value) {
75-               if  (value ==  null  ||  value ==  ram) return ;
76-               ref.read (ramProvider.notifier).set ('${value }B' ).onError (
77-                   ref.notifyError ((e) =>  'Failed to set memory size: $e ' ));
78-             },
79+         :  daemonInfo.when (
80+             data:  (info) =>  RamSlider (
81+               key:  Key ('ram-$ram ' ),
82+               initialValue:  ram,
83+               maxRam:  info.memory.toInt (),
84+               onSaved:  (value) {
85+                 if  (value ==  null  ||  value ==  ram) return ;
86+                 ref
87+                     .read (ramProvider.notifier)
88+                     .set ('${value }B' )
89+                     .onError (ref.notifyError ((e) =>  'Failed to set memory size: $e ' ));
90+               },
91+             ),
92+             loading:  () =>  CircularProgressIndicator (),
93+             error:  (error, stack) =>  Text ('Error: $error ' ),
7994          );
8095
8196    final  diskResource =  ! editing
8297        ?  Text (
8398            'Disk ${disk .map (humanReadableMemory ) ?? '…' }' ,
8499            style:  TextStyle (fontSize:  16 ),
85100          )
86-         :  DiskSlider (
87-             key:  Key ('disk-$disk ' ),
88-             min:  disk,
89-             initialValue:  disk,
90-             onSaved:  (value) {
91-               if  (value ==  null  ||  value ==  disk) return ;
92-               ref.read (diskProvider.notifier).set ('${value }B' ).onError (
93-                   ref.notifyError ((e) =>  'Failed to set disk size: $e ' ));
94-             },
101+         :  daemonInfo.when (
102+             data:  (info) =>  DiskSlider (
103+               key:  Key ('disk-$disk ' ),
104+               min:  disk,
105+               initialValue:  disk,
106+               maxDisk:  info.availableSpace.toInt (),
107+               onSaved:  (value) {
108+                 if  (value ==  null  ||  value ==  disk) return ;
109+                 ref
110+                     .read (diskProvider.notifier)
111+                     .set ('${value }B' )
112+                     .onError (ref.notifyError ((e) =>  'Failed to set disk size: $e ' ));
113+               },
114+             ),
115+             loading:  () =>  CircularProgressIndicator (),
116+             error:  (error, stack) =>  Text ('Error: $error ' ),
95117          );
96118
97119    final  saveButton =  TextButton (
0 commit comments