Explorar o código

mainui: Changed the showhide algorithm to handle internal VMs

Additionnally, the windows resizing algorithm has been changed to use the count of displayed internal VMs.
Olivier Medoc %!s(int64=11) %!d(string=hai) anos
pai
achega
cff51fdabd
Modificáronse 1 ficheiros con 24 adicións e 25 borrados
  1. 24 25
      qubesmanager/main.py

+ 24 - 25
qubesmanager/main.py

@@ -734,6 +734,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
         self.screen_changed = False
 
         self.running_vms_count = 0
+        self.internal_vms_count = 0
 
         self.vm_errors = {}
         self.vm_rec = {}
@@ -903,6 +904,15 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
             n = self.table.rowCount()
         else:
             n = self.running_vms_count
+        if self.show_internal_vms:
+            if self.show_inactive_vms:
+                n = self.table.rowCount()
+            else:
+                n = self.running_vms_count
+        elif self.show_inactive_vms:
+            n = self.table.rowCount() - self.internal_vms_count
+        else:
+            n = self.running_vms_count
 
         if n > default_rows:
             H += default_rows*self.row_height
@@ -945,6 +955,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
         self.qvm_collection.unlock_db()
 
         running_count = 0
+        internal_count = 0
 
         vms_list = [vm for vm in self.qvm_collection.values()]
         for vm in vms_list:
@@ -952,10 +963,12 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
             vm.last_running = vm.last_power_state in ["Running", "Transient"]
             if vm.last_running:
                 running_count += 1
+            if vm.internal:
+                internal_count += 1
             vm.error_msg = self.vm_errors[vm.qid] if vm.qid in self.vm_errors else None
 
         self.running_vms_count = running_count
-
+        self.internal_vms_count = internal_count
         return vms_list
 
     def fill_table(self):
@@ -981,14 +994,14 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
         self.reload_table = False
         self.table.setSortingEnabled(True)
 
-        self.showhide_inactive_vms(True)
+        self.showhide_vms(True, True)
         self.set_table_geom_size()
-        if not self.show_inactive_vms:
-            self.showhide_inactive_vms(self.show_inactive_vms)
+        if (not self.show_inactive_vms) or (not self.show_internal_vms):
+            self.showhide_vms(self.show_inactive_vms, self.show_internal_vms)
             self.set_table_geom_size()
 
-    def showhide_inactive_vms(self, show_inactive):
-        if show_inactive:
+    def showhide_vms(self, show_inactive, show_internal):
+        if show_inactive and show_internal:
             row_no = 0
             while row_no < self.table.rowCount():
                 self.table.setRowHidden(row_no, False)
@@ -998,22 +1011,8 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
             while row_no < self.table.rowCount():
                 widget = self.table.cellWidget(row_no, self.columns_indices["State"])
                 running = widget.vm.last_running
-                if not running:
-                    self.table.setRowHidden(row_no, True)
-                row_no += 1
-
-    def showhide_internal_vms(self, show_internal):
-        if show_internal:
-            row_no = 0
-            while row_no < self.table.rowCount():
-                self.table.setRowHidden(row_no, False)
-                row_no += 1
-        else:
-            row_no = 0
-            while row_no < self.table.rowCount():
-                widget = self.table.cellWidget(row_no, self.columns_indices["State"])
                 internal = widget.vm.internal
-                if internal:
+                if not (show_inactive or running) or not (show_internal or not internal):
                     self.table.setRowHidden(row_no, True)
                 row_no += 1
 
@@ -1056,8 +1055,8 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
                 update_devs=True
 
             if (not self.show_inactive_vms) and some_vms_have_changed_power_state:
-                self.showhide_inactive_vms(True)
-                self.showhide_inactive_vms(False)
+                self.showhide_vms(True, True)
+                self.showhide_vms(False, self.show_internal_vms)
                 self.set_table_geom_size()
 
             if self.sort_by_column == "State" and some_vms_have_changed_power_state:
@@ -1574,7 +1573,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
     def action_showallvms_triggered(self):
         self.show_inactive_vms = self.action_showallvms.isChecked()
 
-        self.showhide_inactive_vms(self.show_inactive_vms)
+        self.showhide_vms(self.show_inactive_vms, self.show_internal_vms)
         self.set_table_geom_size()
         if self.settings_loaded:
             self.manager_settings.setValue('view/show_inactive_vms', self.show_inactive_vms)
@@ -1584,7 +1583,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
     def action_showinternalvms_triggered(self):
         self.show_internal_vms = self.action_showinternalvms.isChecked()
 
-        self.showhide_internal_vms(self.show_internal_vms)
+        self.showhide_vms(self.show_inactive_vms, self.show_internal_vms)
         self.set_table_geom_size()
         if self.settings_loaded:
             self.manager_settings.setValue('view/show_internal_vms', self.show_internal_vms)