~tdelaet/cimple/cimple-future

« back to all changes in this revision

Viewing changes to src/cimple/ui/task/content.py

  • Committer: Thomas Delaet
  • Date: 2010-03-31 06:48:38 UTC
  • Revision ID: thomas@delaet.org-20100331064838-1pgxvnvlaw6o3cys
save qt attempt for reference

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from PyQt4 import Qt
 
2
 
 
3
class ContentViewModel(Qt.QAbstractItemModel):
 
4
                
 
5
        def __init__(self, provider, parent = None):
 
6
                Qt.QAbstractItemModel.__init__(self, parent)
 
7
                self.__root_item = TreeItem(None)
 
8
                self.provider = provider
 
9
                self.__setupContentView()
 
10
                
 
11
        def __setupContentView(self):
 
12
                self.all_tasks = AllTasksItem(None, self.__root_item)
 
13
                self.__root_item.appendChild(self.all_tasks)
 
14
                
 
15
        def data(self, index, role):
 
16
                if not index.isValid():
 
17
                        return Qt.QVariant()
 
18
                if role != Qt.Qt.DisplayRole:
 
19
                        return Qt.QVariant()
 
20
                item = index.internalPointer()
 
21
                return item.data()
 
22
        
 
23
        def flags(self, index):
 
24
                if not index.isValid():
 
25
                        return 0
 
26
                return Qt.Qt.ItemIsEnabled | Qt.Qt.ItemIsSelectable
 
27
                
 
28
        def index(self, row, column, parent):
 
29
                if not self.hasIndex(row, column, parent):
 
30
                        return Qt.QModelIndex()
 
31
                if not parent.isValid():
 
32
                        parent = self.__root_item
 
33
                child = parent.child(row)
 
34
                if child:
 
35
                        return self.createIndex(row, column, child)
 
36
                else:
 
37
                        return Qt.QModelIndex()
 
38
        
 
39
        def parent(self, index):
 
40
                if not index.isValid():
 
41
                        return Qt.QModelIndex()
 
42
                child = index.internalPointer()
 
43
                parent = child.parent()
 
44
                if parent == self.__root_item:
 
45
                        return Qt.QModelIndex()
 
46
                else:
 
47
                        return self.createIndex(parent.row(), 0, parent)
 
48
        
 
49
        def rowCount(self, parent):
 
50
                if parent.column() > 0:
 
51
                        return 0
 
52
                if not parent.isValid():
 
53
                        return self.__root_item.childCount()
 
54
                else:
 
55
                        return parent.internalPointer().childCount()
 
56
        
 
57
        def columnCount(self, parent):
 
58
                return 1
 
59
 
 
60
class TreeItem:
 
61
                
 
62
        def __init__(self, view, parent = None):
 
63
                self.__parent = parent
 
64
                self.childs = []
 
65
                self.__view = view
 
66
                
 
67
        def view(self):
 
68
                return self.__view
 
69
        
 
70
        def child(self, row):
 
71
                return self.childs[row]
 
72
        
 
73
        def childCount(self):
 
74
                return len(self.childs)
 
75
        
 
76
        def data(self):
 
77
                raise NotImplementedError
 
78
        
 
79
        def row(self):
 
80
                if self.parent():
 
81
                        return self.parent().childs.index(self)
 
82
                return 0
 
83
        
 
84
        def parent(self):
 
85
                return self.__parent
 
86
        
 
87
        def appendChild(self, child):
 
88
                self.childs.append(child)
 
89
 
 
90
class AllTasksItem(TreeItem):
 
91
        
 
92
        def __init__(self, view, parent):
 
93
                TreeItem.__init__(self, view, parent)   
 
94
        
 
95
        def data(self):
 
96
                return "All Tasks"