--- /dev/null
+# Authors: Amaury Medeiros and Paulo Ouriques
+# Software License: GPL
+
+from time import sleep
+import threading
+
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
+from ui.pcsuiutils import *
+from pcsuiutils import *
+from ui.pcscustombuttons import PcsCustomButton as customButton
+
+class PcsDeviceInfoViewer(QHBoxLayout):
+
+ ''' Class that displays how the device is connected with the PC'''
+
+ def __init__(self, pcSuite):
+ super(PcsDeviceInfoViewer,self).__init__()
+
+ self.label = QLabel("")
+ self.label.setText("<font style='color: gray'; size=2>Maemo Release</font>")
+ self.label.setFixedSize(90,20)
+
+ self.pcSuite = pcSuite
+ self.l2 = QLabel()
+ pixmap = QPixmap(SSH_IMAGE)
+ self.l2.setPixmap(pixmap)
+
+ spacer = QSpacerItem(60, 60)
+ maemoLayout = QVBoxLayout()
+ maemoLayout.setMargin(0)
+ maemoLayout.addItem(spacer)
+ maemoLayout.addWidget(self.label)
+ maemoLayout.addWidget(self.l2)
+ maemoLayout.addItem(spacer)
+
+ spacer2 = QSpacerItem(0, 32)
+ spacer3 = QSpacerItem(0, 37.6)
+ self.statusLayout = QGridLayout()
+ self.statusLayout.setColumnStretch(1, 1)
+ self.statusLayout.addItem(spacer2, 0, 0)
+ self._createStatusWidget(self.statusLayout)
+ self.statusLayout.addItem(spacer3, 4, 0)
+
+ self.setMargin(0)
+ self.addLayout(maemoLayout)
+ spacer4 = QSpacerItem(10, 10)
+ self.addItem(spacer4)
+ self.addLayout(self.statusLayout)
+
+ self.modelLabel = QLabel("Model", self.pcSuite)
+ self.modelLabel.setText("<font style='color: white'; size=2>Model</font>")
+ self.modelLabel.setGeometry(QRect(330, 70, WINDOW_WIDTH, WINDOW_HEIGHT))
+
+ self.arrowLabel = QLabel(self.pcSuite)
+ self.arrowLabel.setPixmap(QPixmap(WHITE_ARROW))
+ self.arrowLabel.setGeometry(QRect(365, 70, WINDOW_WIDTH, WINDOW_HEIGHT))
+
+ self.deviceNameLabel = QLabel("None", self.pcSuite)
+ self.deviceNameLabel.setText("<font style='color: white'; size=2>None</font>")
+ self.deviceNameLabel.setGeometry(QRect(380, 70, WINDOW_WIDTH, WINDOW_HEIGHT))
+
+
+ self.deviceNameLabel2 = QLabel(self.pcSuite)
+ self.deviceNameLabel2.setText("<font style='color: #333333'; size=2>None</font>")
+ self.deviceNameLabel2.setGeometry(QRect(10, 39, 50, 15))
+
+ self.arrowLabel = QLabel(self.pcSuite)
+ self.arrowLabel.setPixmap(QPixmap(BLACK_ARROW))
+ self.arrowLabel.setGeometry(QRect(40, 39, 15, 15))
+
+ self.actionLabel = QLabel(self.pcSuite)
+ self.actionLabel.setText("<font style='color: white'; size=2>Select option</font>")
+ self.actionLabel.setGeometry(QRect(55, 36, 100, 20))
+
+ self.chargingThread = None;
+
+ def setDeviceInfo(self, deviceInfo):
+ self.deviceInfo = deviceInfo
+ self.label.setText("<font style='color: grey'; size=2>" + deviceInfo.system +"</font>" )
+
+
+ self.label.repaint()
+ self.deviceNameLabel.setText("<font style='color: white'; size=2>"
+ + deviceInfo.name + "</font>")
+ self.deviceNameLabel2.setText("<font style='color: #333333'; size=2>"
+ + deviceInfo.name + "</font>")
+ if(self.chargingThread != None):
+ if self.deviceInfo.charging:
+ self._batteryBar.setToolTip("Charging...")
+ else:
+ self.emit(SIGNAL("stopThread"))
+ self._batteryBar.setToolTip("Battery: %d%%" % (deviceInfo.battery))
+ self._batteryBar.setValue(deviceInfo.battery)
+ else:
+ if self.deviceInfo.charging:
+ self._batteryBar.setToolTip("Charging...")
+ self.chargingThread = ChargingThread(self)
+ self.connect(self.chargingThread, SIGNAL("charging"), self._charging)
+ self.chargingThread.start()
+ else:
+ self._batteryBar.setValue(deviceInfo.battery)
+ self._batteryBar.setToolTip("Battery: %d%%" % (deviceInfo.battery))
+
+
+ memory = deviceInfo.storage
+ tip = ""
+ total_m1 = 0
+ total_m2 = 0
+ current_m1 = 0
+ current_m2 = 0
+ if memory[1] != -1:
+ value_m1 = float(memory[1][1]) * 100 / float(memory[1][0])
+ current_m1 = float(memory[1][1])/1024
+ total_m1 = float(memory[1][0])/1024
+ tip += "MMC1: %.1fMB / %.1fMB - %d%%\n" % (current_m1, total_m1, value_m1)
+
+ if memory[2] != -1:
+ value_m2 = float(memory[2][1]) * 100 / float(memory[2][0])
+ current_m2 = float(memory[2][1])/1024
+ total_m2 = float(memory[2][0])/1024
+ tip += "MMC2: %.1fMB / %.1fMB - %d%%\n" % (current_m2, total_m2, value_m2)
+
+ if total_m1 == 0 and total_m2 == 0:
+ tip = "No external memory found."
+ else:
+ current = current_m1 + current_m2
+ total = total_m1 + total_m2
+ value = (current_m1 + current_m2) * 100 / total
+ tip += "Total: %.1fMB / %.1fMB - %d%%" % (current, total, value)
+ self._memoryBar.setValue(value)
+ self._memoryBar.setToolTip(tip)
+
+ current = float(memory[0][1])/1024
+ total = float(memory[0][0])/1024
+ value = current * 100 / total
+ self._deviceBar.setValue(value)
+ self._deviceBar.setToolTip("Device Memory: %.1fMB / %.1fMB - %d%%" % (current, total, value))
+
+ def _createStatusWidget(self, layout):
+ self._batteryBar = self._newProgressBar(layout, 1, BATTERY_IMAGE)
+ self._deviceBar = self._newProgressBar(layout, 2, DEVICE_MEMORY_IMAGE)
+ self._memoryBar = self._newProgressBar(layout, 3, MEMORY_IMAGE)
+
+ def _newProgressBar(self, layout, line, image):
+ bar = QProgressBar()
+ bar.setMaximum(100)
+ bar.setMinimum(0)
+ bar.setFixedSize(150,12.9)
+ bar.setTextVisible(False)
+ layout.addWidget(bar, line, 0 )
+
+ label = QLabel()
+ label.setFixedSize(30,15)
+ pixmap = QPixmap(image)
+ label.setPixmap(pixmap)
+ layout.addWidget(label, line, 1)
+
+ return bar
+
+ def _charging(self):
+ currentValue = self._batteryBar.value()
+ if(currentValue == 100):
+ self._batteryBar.setValue(0)
+ self._batteryBar.setValue(currentValue + 1)
+ self._batteryBar.repaint()
+
+
+class ChargingThread(QThread):
+ def __init__(self, infoViewer):
+ QThread.__init__(self)
+ self.flag = True
+ self.connect(infoViewer, SIGNAL("stopThread"), self.stopThread)
+ self.connect(infoViewer, SIGNAL("destroyed()"), self.stopThread)
+
+ def stopThread(self):
+ self.flag = False
+
+ def run(self):
+ while(self.flag):
+ try:
+ sleep(0.02)
+ self.emit(SIGNAL("charging"))
+ except:
+ self.stopThread()
+
+
+
\ No newline at end of file