Smoother rerenderTabSubscriptions
Does not reset it all the time but adds/removes Fixes #109
This commit is contained in:
parent
231219a193
commit
d7817ca2ef
|
@ -390,37 +390,73 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
def rerenderTabTreeSubscriptions(self):
|
def rerenderTabTreeSubscriptions(self):
|
||||||
treeWidget = self.ui.treeWidgetSubscriptions
|
treeWidget = self.ui.treeWidgetSubscriptions
|
||||||
folders = ['inbox', 'sent', 'trash']
|
folders = ['inbox', 'sent', 'trash']
|
||||||
treeWidget.clear()
|
|
||||||
treeWidget.setSortingEnabled(False)
|
|
||||||
treeWidget.header().setSortIndicator(0, Qt.AscendingOrder)
|
|
||||||
db = {}
|
|
||||||
queryreturn = sqlQuery('''SELECT fromaddress, folder, count(msgid) as cnt
|
|
||||||
FROM inbox, subscriptions
|
|
||||||
WHERE read = 0 AND subscriptions.address = inbox.fromaddress
|
|
||||||
GROUP BY inbox.fromaddress, folder''')
|
|
||||||
for row in queryreturn:
|
|
||||||
fromaddress, folder, cnt = row
|
|
||||||
if fromaddress not in db:
|
|
||||||
db[fromaddress] = {}
|
|
||||||
db[fromaddress][folder] = cnt
|
|
||||||
queryreturn = sqlQuery('SELECT label, address, enabled FROM subscriptions')
|
|
||||||
for row in queryreturn:
|
|
||||||
label, address, enabled = row
|
|
||||||
newItem = Ui_SubscriptionWidget(treeWidget, 0, address, 0, label, enabled)
|
|
||||||
|
|
||||||
|
# sort ascending when creating
|
||||||
|
if treeWidget.topLevelItemCount() == 0:
|
||||||
|
treeWidget.header().setSortIndicator(0, Qt.AscendingOrder)
|
||||||
|
# init dictionary
|
||||||
|
|
||||||
|
db = getSortedSubscriptions(True)
|
||||||
|
|
||||||
|
if treeWidget.isSortingEnabled():
|
||||||
|
treeWidget.setSortingEnabled(False)
|
||||||
|
|
||||||
|
widgets = {}
|
||||||
|
i = 0
|
||||||
|
while i < treeWidget.topLevelItemCount():
|
||||||
|
widget = treeWidget.topLevelItem(i)
|
||||||
|
if widget is not None:
|
||||||
|
toAddress = widget.address
|
||||||
|
else:
|
||||||
|
toAddress = None
|
||||||
|
|
||||||
|
if not toAddress in db:
|
||||||
|
treeWidget.takeTopLevelItem(i)
|
||||||
|
# no increment
|
||||||
|
continue
|
||||||
|
unread = 0
|
||||||
|
j = 0
|
||||||
|
while j < widget.childCount():
|
||||||
|
subwidget = widget.child(j)
|
||||||
|
try:
|
||||||
|
subwidget.setUnreadCount(db[toAddress][subwidget.folderName]['count'])
|
||||||
|
unread += db[toAddress][subwidget.folderName]['count']
|
||||||
|
db[toAddress].pop(subwidget.folderName, None)
|
||||||
|
except:
|
||||||
|
widget.takeChild(j)
|
||||||
|
# no increment
|
||||||
|
continue
|
||||||
|
j += 1
|
||||||
|
|
||||||
|
# add missing folders
|
||||||
|
if len(db[toAddress]) > 0:
|
||||||
|
j = 0
|
||||||
|
for f, c in db[toAddress].iteritems():
|
||||||
|
subwidget = Ui_FolderWidget(widget, j, toAddress, f, c['count'])
|
||||||
|
j += 1
|
||||||
|
widget.setUnreadCount(unread)
|
||||||
|
db.pop(toAddress, None)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
for toAddress in db:
|
||||||
|
widget = Ui_SubscriptionWidget(treeWidget, i, toAddress, db[toAddress]["inbox"]['count'], db[toAddress]["inbox"]['label'], db[toAddress]["inbox"]['enabled'])
|
||||||
|
j = 0
|
||||||
unread = 0
|
unread = 0
|
||||||
for folder in folders:
|
for folder in folders:
|
||||||
try:
|
try:
|
||||||
newSubItem = Ui_FolderWidget(newItem, 0, address, folder, db[address][folder])
|
subwidget = Ui_FolderWidget(widget, j, toAddress, folder, db[toAddress][folder]['count'])
|
||||||
unread += db[address][folder]
|
unread += db[toAddress][folder]['count']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
newSubItem = Ui_FolderWidget(newItem, 0, address, folder, 0)
|
subwidget = Ui_FolderWidget(widget, j, toAddress, folder, 0)
|
||||||
|
j += 1
|
||||||
newItem.setUnreadCount(unread)
|
widget.setUnreadCount(unread)
|
||||||
newItem.setFlags (newItem.flags() | QtCore.Qt.ItemIsEditable)
|
widget.setFlags (widget.flags() | QtCore.Qt.ItemIsEditable)
|
||||||
|
i += 1
|
||||||
|
|
||||||
treeWidget.setSortingEnabled(True)
|
treeWidget.setSortingEnabled(True)
|
||||||
|
|
||||||
|
|
||||||
def rerenderTabTreeMessages(self):
|
def rerenderTabTreeMessages(self):
|
||||||
self.rerenderTabTree('messages')
|
self.rerenderTabTree('messages')
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,26 @@ def getSortedAccounts():
|
||||||
)
|
)
|
||||||
return configSections
|
return configSections
|
||||||
|
|
||||||
|
def getSortedSubscriptions(count = False):
|
||||||
|
queryreturn = sqlQuery('SELECT label, address, enabled FROM subscriptions ORDER BY label COLLATE NOCASE ASC')
|
||||||
|
ret = {}
|
||||||
|
for row in queryreturn:
|
||||||
|
label, address, enabled = row
|
||||||
|
ret[address] = {}
|
||||||
|
ret[address]["inbox"] = {}
|
||||||
|
ret[address]["inbox"]['label'] = label
|
||||||
|
ret[address]["inbox"]['enabled'] = enabled
|
||||||
|
ret[address]["inbox"]['count'] = 0
|
||||||
|
if count:
|
||||||
|
queryreturn = sqlQuery('''SELECT fromaddress, folder, count(msgid) as cnt
|
||||||
|
FROM inbox, subscriptions
|
||||||
|
WHERE read = 0 AND subscriptions.address = inbox.fromaddress
|
||||||
|
GROUP BY inbox.fromaddress, folder''')
|
||||||
|
for row in queryreturn:
|
||||||
|
address, folder, cnt = row
|
||||||
|
ret[address][folder]['count'] = cnt
|
||||||
|
return ret
|
||||||
|
|
||||||
def accountClass(address):
|
def accountClass(address):
|
||||||
if not shared.config.has_section(address):
|
if not shared.config.has_section(address):
|
||||||
if address == str_broadcast_subscribers:
|
if address == str_broadcast_subscribers:
|
||||||
|
|
Reference in New Issue
Block a user