9 |
9 |
10 import sys |
10 import sys |
11 |
11 |
12 from PyQt4.QtCore import QAbstractItemModel, QModelIndex, Qt |
12 from PyQt4.QtCore import QAbstractItemModel, QModelIndex, Qt |
13 from PyQt4.QtWebKit import QWebSecurityOrigin, QWebDatabase |
13 from PyQt4.QtWebKit import QWebSecurityOrigin, QWebDatabase |
|
14 |
14 |
15 |
15 class WebDatabasesModel(QAbstractItemModel): |
16 class WebDatabasesModel(QAbstractItemModel): |
16 """ |
17 """ |
17 Class implementing the web databases model. |
18 Class implementing the web databases model. |
18 """ |
19 """ |
19 def __init__(self, parent = None): |
20 def __init__(self, parent=None): |
20 """ |
21 """ |
21 Constructor |
22 Constructor |
22 |
23 |
23 @param parent reference to the parent object (QObject) |
24 @param parent reference to the parent object (QObject) |
24 """ |
25 """ |
25 QAbstractItemModel.__init__(self, parent) |
26 QAbstractItemModel.__init__(self, parent) |
26 self.__headers = [ |
27 self.__headers = [ |
27 self.trUtf8("Name"), |
28 self.trUtf8("Name"), |
28 self.trUtf8("Size") |
29 self.trUtf8("Size") |
29 ] |
30 ] |
30 |
31 |
31 self.__data = [] |
32 self.__data = [] |
32 for origin in QWebSecurityOrigin.allOrigins(): |
33 for origin in QWebSecurityOrigin.allOrigins(): |
33 self.__data.append([origin, origin.databases()]) |
34 self.__data.append([origin, origin.databases()]) |
34 |
35 |
35 def removeRows(self, row, count, parent = QModelIndex()): |
36 def removeRows(self, row, count, parent=QModelIndex()): |
36 """ |
37 """ |
37 Public method to remove databases from the model. |
38 Public method to remove databases from the model. |
38 |
39 |
39 @param row row of the first database to remove (integer) |
40 @param row row of the first database to remove (integer) |
40 @param count number of databases to remove (integer) |
41 @param count number of databases to remove (integer) |
51 QWebDatabase.removeDatabase(db) |
52 QWebDatabase.removeDatabase(db) |
52 del self.__data[parentRow][1][row:row + count] |
53 del self.__data[parentRow][1][row:row + count] |
53 self.endRemoveRows() |
54 self.endRemoveRows() |
54 else: |
55 else: |
55 for parentRow in range(row, row + count): |
56 for parentRow in range(row, row + count): |
56 self.beginRemoveRows(self.index(parentRow, 0, parent), |
57 self.beginRemoveRows(self.index(parentRow, 0, parent), |
57 0, len(self.__data[parentRow][1]) - 1) |
58 0, len(self.__data[parentRow][1]) - 1) |
58 for db in self.__data[parentRow][1]: |
59 for db in self.__data[parentRow][1]: |
59 QWebDatabase.removeDatabase(db) |
60 QWebDatabase.removeDatabase(db) |
60 del self.__data[parentRow][1][:] |
61 del self.__data[parentRow][1][:] |
61 self.endRemoveRows() |
62 self.endRemoveRows() |
62 |
63 |
63 return True |
64 return True |
64 |
65 |
65 def headerData(self, section, orientation, role = Qt.DisplayRole): |
66 def headerData(self, section, orientation, role=Qt.DisplayRole): |
66 """ |
67 """ |
67 Public method to get the header data. |
68 Public method to get the header data. |
68 |
69 |
69 @param section section number (integer) |
70 @param section section number (integer) |
70 @param orientation header orientation (Qt.Orientation) |
71 @param orientation header orientation (Qt.Orientation) |
76 return self.__headers[section] |
77 return self.__headers[section] |
77 except IndexError: |
78 except IndexError: |
78 pass |
79 pass |
79 return QAbstractItemModel.headerData(self, section, orientation, role) |
80 return QAbstractItemModel.headerData(self, section, orientation, role) |
80 |
81 |
81 def data(self, index, role = Qt.DisplayRole): |
82 def data(self, index, role=Qt.DisplayRole): |
82 """ |
83 """ |
83 Public method to get data from the model. |
84 Public method to get data from the model. |
84 |
85 |
85 @param index index of entry to get data for (QModelIndex) |
86 @param index index of entry to get data for (QModelIndex) |
86 @param role data role (integer) |
87 @param role data role (integer) |
97 if index.column() == 0: |
98 if index.column() == 0: |
98 if origin.host() == "": |
99 if origin.host() == "": |
99 return self.trUtf8("Local") |
100 return self.trUtf8("Local") |
100 elif origin.port() == 0: |
101 elif origin.port() == 0: |
101 return "{0}://{1}".format( |
102 return "{0}://{1}".format( |
102 origin.scheme(), |
103 origin.scheme(), |
103 origin.host(), |
104 origin.host(), |
104 ) |
105 ) |
105 else: |
106 else: |
106 return "{0}://{1}:{2}".format( |
107 return "{0}://{1}:{2}".format( |
107 origin.scheme(), |
108 origin.scheme(), |
108 origin.host(), |
109 origin.host(), |
109 origin.port(), |
110 origin.port(), |
110 ) |
111 ) |
111 elif index.column() == 1: |
112 elif index.column() == 1: |
112 return self.__dataString(origin.databaseUsage()) |
113 return self.__dataString(origin.databaseUsage()) |
113 else: |
114 else: |
114 # web database |
115 # web database |
116 if index.column() == 0: |
117 if index.column() == 0: |
117 return self.trUtf8("{0} ({1})").format(db.displayName(), db.name()) |
118 return self.trUtf8("{0} ({1})").format(db.displayName(), db.name()) |
118 elif index.column() == 1: |
119 elif index.column() == 1: |
119 return self.__dataString(db.size()) |
120 return self.__dataString(db.size()) |
120 |
121 |
121 def columnCount(self, parent = QModelIndex()): |
122 def columnCount(self, parent=QModelIndex()): |
122 """ |
123 """ |
123 Public method to get the number of columns. |
124 Public method to get the number of columns. |
124 |
125 |
125 @param parent index of parent (QModelIndex) |
126 @param parent index of parent (QModelIndex) |
126 @return number of columns (integer) |
127 @return number of columns (integer) |
128 if parent.column() > 0: |
129 if parent.column() > 0: |
129 return 0 |
130 return 0 |
130 else: |
131 else: |
131 return len(self.__headers) |
132 return len(self.__headers) |
132 |
133 |
133 def rowCount(self, parent = QModelIndex()): |
134 def rowCount(self, parent=QModelIndex()): |
134 """ |
135 """ |
135 Public method to determine the number of rows. |
136 Public method to determine the number of rows. |
136 |
137 |
137 @param parent index of parent (QModelIndex) |
138 @param parent index of parent (QModelIndex) |
138 @return number of rows (integer) |
139 @return number of rows (integer) |
143 if not parent.isValid(): |
144 if not parent.isValid(): |
144 return len(self.__data) |
145 return len(self.__data) |
145 else: |
146 else: |
146 return len(self.__data[parent.row()][1]) |
147 return len(self.__data[parent.row()][1]) |
147 |
148 |
148 def index(self, row, column, parent = QModelIndex()): |
149 def index(self, row, column, parent=QModelIndex()): |
149 """ |
150 """ |
150 Public method to get a model index for an entry. |
151 Public method to get a model index for an entry. |
151 |
152 |
152 @param row row number (integer) |
153 @param row row number (integer) |
153 @param column column number (integer) |
154 @param column column number (integer) |
161 if parent.isValid(): |
162 if parent.isValid(): |
162 return self.createIndex(row, column, parent.row()) |
163 return self.createIndex(row, column, parent.row()) |
163 else: |
164 else: |
164 return self.createIndex(row, column, sys.maxsize) |
165 return self.createIndex(row, column, sys.maxsize) |
165 |
166 |
166 def parent(self, index = QModelIndex()): |
167 def parent(self, index=QModelIndex()): |
167 """ |
168 """ |
168 Public method to get the index of the parent entry. |
169 Public method to get the index of the parent entry. |
169 |
170 |
170 @param index index of the child entry (QModelIndex) |
171 @param index index of the child entry (QModelIndex) |
171 @return index of the parent entry (QModelIndex) |
172 @return index of the parent entry (QModelIndex) |
176 if index.internalId() == sys.maxsize: |
177 if index.internalId() == sys.maxsize: |
177 return QModelIndex() |
178 return QModelIndex() |
178 |
179 |
179 return self.createIndex(index.internalId(), 0) |
180 return self.createIndex(index.internalId(), 0) |
180 |
181 |
181 def hasChildren(self, parent = QModelIndex()): |
182 def hasChildren(self, parent=QModelIndex()): |
182 """ |
183 """ |
183 Public method to check, if a parent node has some children. |
184 Public method to check, if a parent node has some children. |
184 |
185 |
185 @param parent index of the parent node (QModelIndex) |
186 @param parent index of the parent node (QModelIndex) |
186 @return flag indicating the presence of children (boolean) |
187 @return flag indicating the presence of children (boolean) |