+++ /dev/null
-# low_device_manager module
-# Authors: Nicholas Alexander && Otacilio Lacerda
-# Module responsible for management of devices informations.
-
-import pickle
-import os
-
-from PyQt4.QtCore import *
-
-import pcsutils as utils
-from pcsdeviceinfo import PcsDeviceInfo
-from pcsdeviceutils import *
-from ui.tsuigeneralmethods import showMessageBox
-
-USER_HOST = 'root'
-HOME = os.path.expanduser("~")
-DEVICES_FILE = os.path.join(HOME, ".pcsuite/devices/.ip_list")
-
-
-class PcsDeviceManager(QObject):
- """Class responsible for devices management such as adding and removing
- devices, get batery, memory and name informations and saving Device objects.
-
- The DeviceManager holds a list of Devices objects and can save and load this
- list on a file and retrieve information about each Device.
-
- """
- _currentIp = None
- def __init__(self):
- QObject.__init__(self)
- self._deviceList = []
-
- # FIXME: initialize this in another place
- utils.initDirs()
- self.loadDevices()
-
- self._currentIp = None
-
- def _batteryException(self):
- errorMessage = "Could not get device battery status, check if " +\
- "python is installed on your device. To get information about " + \
- "python installation visit: " +\
- "http://pymaemo.garage.maemo.org/installation.html"
- showMessageBox(errorMessage,
- "Error while collecting device information")
-
- def _addDevice(self, deviceIp):
- """Add a new device to list connecting to it in the process.
-
- Arguments:
- host_ip -- The IP of the device to connect.
-
- """
- self.loadDevices()
-
- deviceInfo = PcsDeviceInfo()
- deviceInfo.ip = deviceIp
- (deviceInfo.name, deviceInfo.system,
- deviceInfo.ossoBackup) = queryProductInformation(deviceIp)
- if deviceInfo.name == "NO INFORMATION":
- return "connectException"
- try:
- deviceInfo.battery = float(queryDeviceBattery(deviceIp))
- except:
- return "batteryException"
-
- if deviceInfo.battery < 0:
- deviceInfo.charging = True
-
- deviceInfo.storage = queryDeviceStorage(deviceIp)
-
- if self.getDevice(deviceIp) != None:
- return deviceInfo
-
- self._deviceList.append(deviceInfo)
- self.saveDevices()
- return deviceInfo
-
- def removeDevice(self, deviceIp):
- """Remove a Device from list.
-
- Arguments:
- device_ip -- The IP of the device to remove
-
- """
- deviceInfo = self.getDevice(deviceIp)
- if deviceInfo != -1:
- self._deviceList.remove(deviceInfo)
- self.saveDevices()
- return 1
- else:
- raise Exception("No device with that ip was found")
-
- def getDevices(self):
- """Returns a list with the IP address of all devices in the object's
- devices list.
-
- """
- ips = []
- for deviceInfo in self._deviceList:
- ips.append(deviceInfo.ip)
- return ips
-
- def saveDevices(self):
- """Save the list of Device objects in DEVICES_FILE file."""
- obj = self._deviceList
- file = open(DEVICES_FILE, "w")
- pickle.dump(obj, file)
- file.close()
-
- def loadDevices(self):
- """Loads the list of Device objects from DEVICES_FILE path if possible."""
-
- if os.path.exists(DEVICES_FILE):
- file = open(DEVICES_FILE)
- self._deviceList = pickle.load(file)
- file.close()
-
- def getDevice(self, ip):
- # Returns the Device object with the provided ip
- for deviceInfo in self._deviceList:
- if deviceInfo.ip == ip:
- return deviceInfo
- return None
-
- def setCurrentDevice (self, ip):
- self._currentIp = ip
-
- def getCurrentDevice(self):
- return self.getDevice(self._currentIp)
-