import cryptobox.plugins.base
from cryptobox.core.exceptions import *


class volume_automount(cryptobox.plugins.base.CryptoBoxPlugin):

	pluginCapabilities = [ "volume" ]
	pluginVisibility = [ "properties" ]
	requestAuth = False
	rank = 80

	trueString = "yes"
	falseString = "no"


	def doAction(self, action=None):
		container = self.cbox.getContainer(self.device)
		if action is None:
			pass
		elif action == "enable":
			container.attributes["automount"] = self.trueString
			self.hdf["Data.Success"] = "Plugins.volume_automount.AutoMountEnabled"
			self.cbox.log.info("volume_automount: enabled for device '%s'" % self.device)
			self.cbox.prefs.volumesDB.write()
		elif action == "disable":
			container.attributes["automount"] = self.falseString
			self.hdf["Data.Success"] = "Plugins.volume_automount.AutoMountDisabled"
			self.cbox.log.info("volume_automount: disabled for device '%s'" % self.device)
			self.cbox.prefs.volumesDB.write()
		else:
			self.cbox.log.info("volume_automount: invalid action (%s)" % str(action))
		self.__prepareHDF()
		return "volume_automount"
	

	def getStatus(self):
		return str(self.__isAutoMount())
	

	def __prepareHDF(self):
		if self.__isAutoMount():
			self.hdf[self.hdf_prefix + "automount_setting"] = "1"
		else:
			self.hdf[self.hdf_prefix + "automount_setting"] = "0"


	def __isAutoMount(self):
		container = self.cbox.getContainer(self.device)
		if not container:
			return False
		if container.attributes.has_key("automount"):
			return container.attributes["automount"] == self.trueString
		else:
			return False

