class LOldOrganizeView(QIconView):
	def __init__(self, parent):
		QIconView.__init__(self, parent, "Organize")#, Qt.WRepaintNoErase | Qt.WResizeNoErase)
		#self.viewport().setBackgroundMode(Qt.NoBackground)
		self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
		self.setResizeMode(QIconView.Adjust)
		self.setBackgroundMode(Qt.NoBackground)
		self.setAutoArrange(True)
		self.setSelectionMode(QIconView.Extended)

	def setLibrary(self, lib):
		self.lib = lib
		QObject.connect(lib, PYSIGNAL("updateAlbums"), self.slotUpdateAlbums)
		QObject.connect(self, PYSIGNAL("createAlbum"), lib.slotNewAlbum)

	def setAlbum(self, album, r):
		self.album = album
		self.thumbRect = r
		self.refreshThumbnails()

	def refreshThumbnails(self):
		self.setUpdatesEnabled(False)
		self.clear()
		keys = self.album['KeyList']
		for key in keys:
			p = self.lib.getImage(key)
			item = LOrganizeViewItem(self, p['Caption'], QPixmap(p['ThumbPath']))
			item.setRenameEnabled(1)
			item.setScaledRect(self.thumbRect)
			item.key = key  # save key and dictionary with each iconItem
			item.dict = p
		self.setUpdatesEnabled(True)

	def dragObject(self):
		keys = []
		if self.currentItem():
			keys.append(self.currentItem().key)
			# iterate through items to find selection set
			ivi = self.firstItem()
			while ivi:
				if ivi.isSelected() and ivi != self.currentItem():
					keys.append(ivi.key)
				ivi = ivi.nextItem()
			print "DragObject",keys
			cur = QCursor.pos()
			orig = self.viewportToContents(cur)
			drag = LPhotoKeysDrag(keys, self.album['AlbumName'], self.viewport())
			r = self.currentItem().pixmapRect()
			p = QPixmap(self.currentItem().pixmap())
			b = self.setBitmapMask(p)
			drag.setPixmap(p, QPoint(0,0))
			return drag

	def setBitmapMask(self, p):
		bytes = p.width() / 8;
		if p.width() % 8:
			bytes = bytes + 1
		r1=""
		r2=""
		s=""
		for i in range(bytes):
			r1 = r1 + '\x55'
			r2 = r2 + '\xaa'
		r2 = r1 + r2

		for i in range(p.height()/2):
			s = s + r2
		if p.height() % 8:
			s = s + r1

		b = QBitmap(p.width(), p.height(), s)
		p.setMask(b)

	def slotSetThumbScale(self, size):
		ivi = self.firstItem()
		r = QRect(0, 0 , size, size/4*3)
		self.thumbRect = r
		while ivi:
			ivi.setScaledRect(r)
			ivi = ivi.nextItem()
		self.setGridX(size)
		self.setGridY(size/4*3)
		self.arrangeItemsInGrid()

	def slotUpdateAlbums(self, albumNames):
		print "slotUpdateAlbums",self.__class__
		for album in albumNames:
			if album == self.album['AlbumName']:
				self.refreshThumbnails()

	def slotNewAlbumFromSelection(self):
		keys = []
		ivi = self.firstItem()
		while ivi:
			if ivi.isSelected():
				keys.append(ivi.key)
			ivi = ivi.nextItem()
		if len(keys) > 0:
			print "new album keys :",keys
			self.emit(PYSIGNAL("createAlbum"), (keys, None))

	def slotNextItem(self):
		i = self.currentItem()
		# we should check for multiple selections and cycle through that first
		if i and i.nextItem():
			self.setCurrentItem(i.nextItem())

	def slotPrevItem(self):
		i = self.currentItem()
		# we should check for multiple selections and cycle through that first
		if i and i.prevItem():
			self.setCurrentItem(i.prevItem())


class LOrganizeViewItem(QIconViewItem):
	def __init__(self, view, caption, image):
		QIconViewItem.__init__(self, view, caption, image)
		self.image = image.convertToImage()

	def paintItem(self, painter, colorGroup):
		if not(hasattr(self, "image")):
			return
		r = self.pixmapRect(0)
		if not(hasattr(self, "scaledPixmap")):
			self.scaledPixmap = QPixmap()
			self.scaledPixmap.convertFromImage(self.image.smoothScale(r.width(), r.height()))
		painter.drawPixmap(r, self.scaledPixmap)

		if self.isSelected():
			sr = QRect(r.x()-1, r.y()-1, r.width()+1, r.height()+1)
			painter.drawWinFocusRect(sr)
			painter.drawRect(sr)

	def setScaledRect(self, r):
		QIconViewItem.setPixmapRect(self, r)
		if hasattr(self, "scaledPixmap"):
			delattr(self, "scaledPixmap")

	def calcRect(self, s):
		print "Request to calcRect"
		QIconViewItem.calcRect(self, s)
		return pixmapRect(False)

	def setImage(self, image):
		self.image = image

