branches/kde/user-manager/corporate2 - Below changes were made for plistview

Mehmet Özdemir uludag-commits at pardus.org.tr
1 Mar 2011 Sal 16:31:33 EET


Author: mehmet.ozdemir
Date: Tue Mar  1 16:31:33 2011
New Revision: 36308

Modified:
   branches/kde/user-manager/corporate2/um_list.py
Log:
Below changes were made for plistview
* layout style item addition was completely removed, items are being added as child
* scroll problem was fixed with the above solution, it is working now
* Key events were added



---
 um_list.py |  119 ++++++++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 87 insertions(+), 32 deletions(-)

Modified: branches/kde/user-manager/corporate2/um_list.py
=================================================================
--- branches/kde/user-manager/corporate2/um_list.py	(original)
+++ branches/kde/user-manager/corporate2/um_list.py	Tue Mar  1 16:31:33 2011
@@ -44,16 +44,17 @@
         self.layout.setDirection(QVBoxLayout.TopToBottom)
         self.layout.setSpacing(0)
         self.layout.setMargin(0)"""
-        self.setStaticBackground(True)
+        #self.setStaticBackground(True)
         self.enableClipper(True)
-        #self.spacer = QSpacerItem(4, 4, QSizePolicy.Minimum, QSizePolicy.Expanding)
-        #self.layout.insertItem(-1, self.spacer)
 
         self.baseColor = KGlobalSettings.baseColor()
         self.selectedColor = KGlobalSettings.highlightColor()
         self.hoverColor = KGlobalSettings.buttonBackground()
         self.viewport().setPaletteBackgroundColor(self.baseColor)
 
+    def showSelected(self):
+        self.ensureVisible(0, self.visibleitems.index(self.selectedItem)*self.itemHeight)
+
     def clear(self):
         #çocukları da silinecek !!!!!!!!!! böyleyken hepsini siliyo işte
         for e in self.items:
@@ -63,14 +64,11 @@
     def resizeEvent(self, event):
         QScrollView.resizeEvent(self, event)
         self.myResize(self.visibleWidth())
-        self.repaint()
-        #self.layout.removeItem(self.spacer)
-        #self.layout.insertItem(-1, self.spacer)
+        #self.repaint()
 
     def viewportResizeEvent(self, e):
-        for x in self.items:
-            x.resize(self.width(), 24)
-        print ':::::::::::::'
+        for x in self.visibleitems:
+            x.resize(self.width(), self.itemHeight)
 
     def myResize(self, width):
         mw = 0
@@ -112,36 +110,53 @@
                 previous = it
                 it = it.nextItem
 
+    def rootItems(self):
+        rootItems = []
+        it = self.firstItem
+        while it:
+            rootItems.append(it)
+            it = it.nextItem
+        return rootItems
+
+    def shiftLowerItems(self, item):
+        for i in range(self.visibleitems.index(item), len(self.visibleitems)):
+            shiftItem = self.visibleitems[i]
+            self.moveChild(shiftItem, 0, self.visibleitems.index(shiftItem)*self.itemHeight)
+            #print self.visibleitems.index(item)*self.itemHeight
+            #print self.visibleitems[i].name
+
     def add(self, item):
-        # pop spacer
-        #self.layout.removeItem(self.spacer)
-        index = (len(self.items))*24
-        self.addChild(item, 0, index)
-        self.items.append(item)
-        self.visibleitems.append(item)
+        ### Ekleme yapıldığında collapsed ise açılmalı !!!!!!!!
+
+        #self.items.append(item)
         size = QSize(self.width(), self.height())
         self.resizeEvent(QResizeEvent(size , QSize(0, 0)))
+        #self.visibleitems.append(item)
         if item.parentItem:
-            #index = self.layout.findWidget(item.parentItem)
-            #self.layout.insertWidget(index+1, item)
+            lastChild = item.parentItem.findLastChild()
+            if lastChild:
+                self.items.insert(self.items.index(lastChild)+1, item)
+                self.visibleitems.insert(self.visibleitems.index(lastChild)+1, item)
+            else:
+                self.items.insert(self.items.index(item.parentItem)+1, item)
+                self.visibleitems.insert(self.visibleitems.index(item.parentItem)+1, item)
+            self.addChild(item, 0, self.visibleitems.index(item)*self.itemHeight)
             if item.parentItem.firstChild: # childların sonuna ekle
-                lastChild = item.parentItem.findLastChild()
+                #lastChild = item.parentItem.findLastChild()
                 lastChild.nextItem = item
             else: # first child olarak ekle
                 item.parentItem.firstChild = item
-            #item.reparent(self, 0, QPoint(0,0), False)
+            item.resize(item.parentItem.width(), self.itemHeight)
+            self.shiftLowerItems(item)
         else:
-            # add to end (index = -1)
-            #self.layout.removeItem(self.spacer)
-            #self.layout.insertWidget(-1, item)
-            #self.layout.insertItem(-1, self.spacer)
+            self.items.insert(len(self.items), item) # en sona ekle
+            self.visibleitems.insert(len(self.visibleitems), item) # en sona ekle
+            self.addChild(item, 0, self.visibleitems.index(item)*self.itemHeight)
             if not self.firstItem:
                 self.firstItem = item
             else:
                 lastSibling = self.findLastSibling(self.firstItem)
                 lastSibling.nextItem = item
-        # push spacer
-        #self.layout.insertItem(-1, self.spacer)
         #if item.parentItem:
         #    item.hide()
 
@@ -175,6 +190,7 @@
         self.text = text
         self.widgets = []
 
+        self.index = -1
         self.data = data
 
         self.isExpanded = False
@@ -226,6 +242,7 @@
     def resetOldSelected(self, item):
         item.isSelected = False
         item.repaint()
+
     # normal listviewde first child olmadığı zaman arrow gözükmez ve + işareti çıkmadığı için tıklama yapılmaz.
     # burda çocuğu olmasa dahi arrow gözükecek ve expanded signali yollanacak, adam slotta denetlesin
     # böyle bir şeyi yapma sebebi, expanded olduğunda listenin altını doldurmak isteği, öbür türlü fake bi kayıt koymak ve sonra
@@ -241,6 +258,7 @@
         else:
             self.hideChilds()
             self.parent.emit(PYSIGNAL("collapsed"), (self,))
+        self.parent.shiftLowerItems(self)
         self.parent.resizeEvent(QResizeEvent(QSize(self.width(), self.height()), QSize(self.width(), self.height())))
 
     def eventFilter(self, target, event):
@@ -255,6 +273,7 @@
                 self.isSelected = True
                 self.expandOrCollapse()
             self.parent.emit(PYSIGNAL("clicked"), (event, self,))
+            self.setFocus()
         elif (event.type() == QEvent.MouseButtonDblClick):
             self.expandOrCollapse()
             #print 'event filter içiii'
@@ -270,15 +289,47 @@
         elif (event.type() == QEvent.Leave):
             self.parent.hoverItem = None
             self.repaint()
+        elif (event.type() == QEvent.KeyPress):
+            if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter:
+                self.expandOrCollapse()
+            elif event.key() == Qt.Key_Up:
+                index = self.parent.visibleitems.index(self)
+                previous = self.parent.visibleitems[index-1]
+                self.resetOldSelected(self)
+                self.parent.selectedItem = previous
+                previous.isSelected = True
+                previous.repaint()
+                previous.setFocus()
+                self.parent.showSelected()
+                return True
+            elif event.key() == Qt.Key_Down:
+                index = self.parent.visibleitems.index(self)
+                if index == len(self.parent.visibleitems)-1:
+                    index = -1
+                next = self.parent.visibleitems[index+1]
+                self.resetOldSelected(self)
+                self.parent.selectedItem = next
+                next.isSelected = True
+                next.repaint()
+                next.setFocus()
+                self.parent.showSelected()
+                return True
+            elif event.key() == Qt.Key_Tab:
+                return False
+            self.setFocus()
+            return True
         return False
 
     def showChilds(self):
         child = self.firstChild
+        index = self.parent.visibleitems.index(self)
         while child:
-            child.show()
             if child not in self.parent.visibleitems:
-                self.parent.visibleitems.append(child)
+                self.parent.visibleitems.insert(index+1, child)
+            index += 1
+            child.show()
             child = child.nextItem
+        self.parent.setContentsPos(0, self.parent.visibleitems.index(self)*self.parent.itemHeight)
 
     def hideChilds(self):
         child = self.firstChild
@@ -312,10 +363,11 @@
 
     def paintEvent(self, event):
 
-        #paint = QPainter(self)
-        paint = QPainter(self.buffer)
+        paint = QPainter(self)
+        #paint = QPainter(self.buffer)
         if not paint.isActive():
-            paint.begin(self.buffer)
+            #paint.begin(self.buffer)
+            paint.begin(self)
 
         color = self.parent.baseColor
         if self.isSelected:
@@ -354,10 +406,13 @@
         fm = QFontMetrics(font)
         ascent = fm.ascent()
         mid = (self.height()+8) / 2
-        paint.drawText(self.depthExtra + 2 + PListView.arrowSize + 6 + self.parent.iconSize + 6, mid, unicode(self.text))
+        #font.setStyleStrategy(QFont.NoAntialias)
+        paint.setFont(font)
+        dx = self.depthExtra + 2 + PListView.arrowSize + 6 + self.parent.iconSize + 6
+        paint.drawText(dx, mid, unicode(self.text))
 
         paint.end()
-        bitBlt(self, 0, 0, self.buffer)
+        #bitBlt(self, 0, 0, self.buffer)
 
     def resizeEvent(self, event):
         w = event.size().width()


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi