194 @param role data role |
194 @param role data role |
195 @type int |
195 @type int |
196 @return bookmark data |
196 @return bookmark data |
197 @rtype Any |
197 @rtype Any |
198 """ |
198 """ |
199 from .BookmarkNode import BookmarkNode |
199 from .BookmarkNode import BookmarkNodeType |
200 |
200 |
201 if not index.isValid() or index.model() != self: |
201 if not index.isValid() or index.model() != self: |
202 return None |
202 return None |
203 |
203 |
204 bookmarkNode = self.node(index) |
204 bookmarkNode = self.node(index) |
205 if role in [Qt.ItemDataRole.EditRole, Qt.ItemDataRole.DisplayRole]: |
205 if role in [Qt.ItemDataRole.EditRole, Qt.ItemDataRole.DisplayRole]: |
206 if bookmarkNode.type() == BookmarkNode.Separator: |
206 if bookmarkNode.type() == BookmarkNodeType.Separator: |
207 if index.column() == 0: |
207 if index.column() == 0: |
208 return 50 * "\xB7" |
208 return 50 * "\xB7" |
209 elif index.column() == 1: |
209 elif index.column() == 1: |
210 return "" |
210 return "" |
211 |
211 |
225 |
225 |
226 elif role == BookmarksModel.TypeRole: |
226 elif role == BookmarksModel.TypeRole: |
227 return bookmarkNode.type() |
227 return bookmarkNode.type() |
228 |
228 |
229 elif role == BookmarksModel.SeparatorRole: |
229 elif role == BookmarksModel.SeparatorRole: |
230 return bookmarkNode.type() == BookmarkNode.Separator |
230 return bookmarkNode.type() == BookmarkNodeType.Separator |
231 |
231 |
232 elif role == Qt.ItemDataRole.DecorationRole and index.column() == 0: |
232 elif role == Qt.ItemDataRole.DecorationRole and index.column() == 0: |
233 if bookmarkNode.type() == BookmarkNode.Folder: |
233 if bookmarkNode.type() == BookmarkNodeType.Folder: |
234 return EricPixmapCache.getIcon("dirOpen") |
234 return EricPixmapCache.getIcon("dirOpen") |
235 |
235 |
236 return WebBrowserWindow.icon(QUrl(bookmarkNode.url)) |
236 return WebBrowserWindow.icon(QUrl(bookmarkNode.url)) |
237 |
237 |
238 return None |
238 return None |
335 @param parent index of the parent node |
335 @param parent index of the parent node |
336 @type QModelIndex |
336 @type QModelIndex |
337 @return flag indicating the presence of children |
337 @return flag indicating the presence of children |
338 @rtype bool |
338 @rtype bool |
339 """ |
339 """ |
340 from .BookmarkNode import BookmarkNode |
340 from .BookmarkNode import BookmarkNodeType |
341 |
341 |
342 if parent is None: |
342 if parent is None: |
343 parent = QModelIndex() |
343 parent = QModelIndex() |
344 |
344 |
345 if not parent.isValid(): |
345 if not parent.isValid(): |
346 return True |
346 return True |
347 |
347 |
348 parentNode = self.node(parent) |
348 parentNode = self.node(parent) |
349 return parentNode.type() == BookmarkNode.Folder |
349 return parentNode.type() == BookmarkNodeType.Folder |
350 |
350 |
351 def flags(self, index): |
351 def flags(self, index): |
352 """ |
352 """ |
353 Public method to get flags for a node cell. |
353 Public method to get flags for a node cell. |
354 |
354 |
355 @param index index of the node cell |
355 @param index index of the node cell |
356 @type QModelIndex |
356 @type QModelIndex |
357 @return flags |
357 @return flags |
358 @rtype Qt.ItemFlags |
358 @rtype Qt.ItemFlags |
359 """ |
359 """ |
360 from .BookmarkNode import BookmarkNode |
360 from .BookmarkNode import BookmarkNodeType |
361 |
361 |
362 if not index.isValid(): |
362 if not index.isValid(): |
363 return Qt.ItemFlag.NoItemFlags |
363 return Qt.ItemFlag.NoItemFlags |
364 |
364 |
365 node = self.node(index) |
365 node = self.node(index) |
372 if node in (self.__bookmarksManager.menu(), self.__bookmarksManager.toolbar()): |
372 if node in (self.__bookmarksManager.menu(), self.__bookmarksManager.toolbar()): |
373 return flags |
373 return flags |
374 |
374 |
375 flags |= Qt.ItemFlag.ItemIsDragEnabled |
375 flags |= Qt.ItemFlag.ItemIsDragEnabled |
376 |
376 |
377 if (index.column() == 0 and type_ != BookmarkNode.Separator) or ( |
377 if (index.column() == 0 and type_ != BookmarkNodeType.Separator) or ( |
378 index.column() == 1 and type_ == BookmarkNode.Bookmark |
378 index.column() == 1 and type_ == BookmarkNodeType.Bookmark |
379 ): |
379 ): |
380 flags |= Qt.ItemFlag.ItemIsEditable |
380 flags |= Qt.ItemFlag.ItemIsEditable |
381 |
381 |
382 return flags |
382 return flags |
383 |
383 |
447 @param parent index of the parent node |
447 @param parent index of the parent node |
448 @type QModelIndex |
448 @type QModelIndex |
449 @return flag indicating successful acceptance of the data |
449 @return flag indicating successful acceptance of the data |
450 @rtype bool |
450 @rtype bool |
451 """ |
451 """ |
452 from .BookmarkNode import BookmarkNode |
452 from .BookmarkNode import BookmarkNode, BookmarkNodeType |
453 from .XbelReader import XbelReader |
453 from .XbelReader import XbelReader |
454 |
454 |
455 if action == Qt.DropAction.IgnoreAction: |
455 if action == Qt.DropAction.IgnoreAction: |
456 return True |
456 return True |
457 |
457 |
462 |
462 |
463 if not data.hasFormat(self.MIMETYPE): |
463 if not data.hasFormat(self.MIMETYPE): |
464 if not data.hasUrls(): |
464 if not data.hasUrls(): |
465 return False |
465 return False |
466 |
466 |
467 node = BookmarkNode(BookmarkNode.Bookmark, parentNode) |
467 node = BookmarkNode(BookmarkNodeType.Bookmark, parentNode) |
468 node.url = bytes(data.urls()[0].toEncoded()).decode() |
468 node.url = bytes(data.urls()[0].toEncoded()).decode() |
469 |
469 |
470 if data.hasText(): |
470 if data.hasText(): |
471 node.title = data.text() |
471 node.title = data.text() |
472 else: |
472 else: |