--- /dev/null
+# Authors: Amaury Medeiros and Paulo Ouriques
+# Software License: GPL
+
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
+class PCSBackupListUi(QTableView):
+
+ ''' Class that creates a table, where the backups will be shown '''
+
+ def __init__(self, backupManager):
+ super(PCSBackupListUi, self).__init__()
+
+ self.setSelectionBehavior(QAbstractItemView.SelectRows)
+ self.setSelectionMode(QAbstractItemView.ExtendedSelection)
+ self.setAlternatingRowColors(True)
+ self.setShowGrid(False)
+ self.setEditTriggers(QAbstractItemView.NoEditTriggers)
+ self.model = QStandardItemModel()
+ self.setModel(self.model)
+
+ hHeader = QHeaderView(Qt.Horizontal)
+ hHeader.setObjectName("listHeader")
+ hHeader.setAttribute(Qt.WA_NoSystemBackground)
+ hHeader.setStretchLastSection(True)
+ hHeader.setResizeMode(QHeaderView.ResizeToContents)
+ hHeader.setMinimumSectionSize(100)
+
+ hHeader.setClickable(False)
+
+ self.setHorizontalHeader(hHeader)
+
+ vHeader = QHeaderView(Qt.Vertical)
+ vHeader.setVisible(False)
+ self.setVerticalHeader(vHeader)
+ self._backupManager = backupManager
+
+ def updateBackupList(self):
+ self.model.clear()
+ self.model.setHorizontalHeaderItem(0, QStandardItem("NAME"))
+ self.model.setHorizontalHeaderItem(1, QStandardItem("SIZE"))
+ self.model.setHorizontalHeaderItem(2, QStandardItem("DATE"))
+
+ backupList = self._backupManager.getBackupList()
+ for backupInfo in backupList:
+ name = backupInfo.getName()
+ date = str(backupInfo.getDate())
+ size = self._formatBackupSize(backupInfo.getSize())
+ backupData = [QStandardItem(name), QStandardItem(size), QStandardItem(date)]
+ self.model.appendRow(backupData)
+
+ def removeSelectedBackups(self):
+ selectionModel = self.selectionModel()
+ indexList = selectionModel.selectedRows()
+ for index in reversed(sorted(indexList)):
+ if index.isValid():
+ row = index.row()
+ data = self.model.itemData(index)
+ backupName = data[0].toString()
+ if self._backupManager.removeBackup((str(backupName).strip())):
+ self.model.removeRow(row)
+ self.updateBackupList()
+
+ def renameSelectedBackup (self, newName):
+ #!!!!!!! getSelectedBackup
+ backupName = (str(self.getSelectedBackup())).strip()
+ if backupName != None:
+ if self._backupManager.renameBackup(backupName, newName):
+ self.updateBackupList()
+ return True
+
+ return False
+
+ def getSelectedBackup(self):
+ list = self.getSelectedBackupList()
+ if list and len(list) > 0:
+ return list[0]
+
+ return None
+
+ def getSelectedBackupList(self):
+ selectionModel = self.selectionModel()
+ indexList = selectionModel.selectedRows()
+ backupList = []
+ for index in indexList:
+ if index.isValid():
+ row = index.row()
+ data = self.model.itemData(index)
+ backupList.append(data[0].toString())
+ return backupList
+
+ def getBackupManager(self):
+ return self._backupManager
+
+ def _formatBackupSize(self, size):
+ """ Return a string with a more suited size and byte multiple for the
+ received size.
+
+ Attributes:
+ String/Float/Int size - size in bytes or string representing it.
+
+ """
+ size = float(size)
+ multiples = ["B", "KB", "MB", "GB"]
+ divisions = 0
+ while size > 1000 and divisions <= 3:
+ size = size / 1024.
+ divisions += 1
+
+ return "%.1f %s" % (size, multiples[divisions])