MarkAllUnread sqlite argument limit
- shouldn't crash anymore if there are too many messages to mark read
This commit is contained in:
parent
413419c858
commit
6b65dfeeec
|
@ -2617,6 +2617,16 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
# self.rerenderInboxToLabels()
|
# self.rerenderInboxToLabels()
|
||||||
|
|
||||||
def on_action_MarkAllRead(self):
|
def on_action_MarkAllRead(self):
|
||||||
|
def partialUpdate(folder, msgids):
|
||||||
|
if len(msgids) == 0:
|
||||||
|
return 0
|
||||||
|
if folder == 'sent':
|
||||||
|
return sqlExecute(
|
||||||
|
"UPDATE sent SET read = 1 WHERE ackdata IN(%s) AND read=0" %(",".join("?"*len(msgids))), *msgids)
|
||||||
|
else:
|
||||||
|
return sqlExecute(
|
||||||
|
"UPDATE inbox SET read = 1 WHERE msgid IN(%s) AND read=0" %(",".join("?"*len(msgids))), *msgids)
|
||||||
|
|
||||||
if QtGui.QMessageBox.question(self, "Marking all messages as read?", _translate("MainWindow", "Are you sure you would like to mark all messages read?"), QMessageBox.Yes|QMessageBox.No) != QMessageBox.Yes:
|
if QtGui.QMessageBox.question(self, "Marking all messages as read?", _translate("MainWindow", "Are you sure you would like to mark all messages read?"), QMessageBox.Yes|QMessageBox.No) != QMessageBox.Yes:
|
||||||
return
|
return
|
||||||
addressAtCurrentRow = self.getCurrentAccount()
|
addressAtCurrentRow = self.getCurrentAccount()
|
||||||
|
@ -2630,6 +2640,8 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
font = QFont()
|
font = QFont()
|
||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
|
|
||||||
|
markread = 0
|
||||||
|
|
||||||
for i in range(0, tableWidget.rowCount()):
|
for i in range(0, tableWidget.rowCount()):
|
||||||
msgids.append(str(tableWidget.item(
|
msgids.append(str(tableWidget.item(
|
||||||
i, 3).data(Qt.UserRole).toPyObject()))
|
i, 3).data(Qt.UserRole).toPyObject()))
|
||||||
|
@ -2637,14 +2649,13 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
tableWidget.item(i, 1).setUnread(False)
|
tableWidget.item(i, 1).setUnread(False)
|
||||||
tableWidget.item(i, 2).setUnread(False)
|
tableWidget.item(i, 2).setUnread(False)
|
||||||
tableWidget.item(i, 3).setFont(font)
|
tableWidget.item(i, 3).setFont(font)
|
||||||
|
# sqlite default limit, unfortunately getting/setting isn't exposed to python
|
||||||
|
if i % 999 == 999:
|
||||||
|
markread += partialUpdate(self.getCurrentFolder(), msgids)
|
||||||
|
msgids = []
|
||||||
|
|
||||||
markread = 0
|
if len(msgids) > 0:
|
||||||
if self.getCurrentFolder() == 'sent':
|
markread += partialUpdate(self.getCurrentFolder(), msgids)
|
||||||
markread = sqlExecute(
|
|
||||||
"UPDATE sent SET read = 1 WHERE ackdata IN(%s) AND read=0" %(",".join("?"*len(msgids))), *msgids)
|
|
||||||
else:
|
|
||||||
markread = sqlExecute(
|
|
||||||
"UPDATE inbox SET read = 1 WHERE msgid IN(%s) AND read=0" %(",".join("?"*len(msgids))), *msgids)
|
|
||||||
|
|
||||||
if markread > 0:
|
if markread > 0:
|
||||||
self.propagateUnreadCount(addressAtCurrentRow, self.getCurrentFolder(), None, 0)
|
self.propagateUnreadCount(addressAtCurrentRow, self.getCurrentFolder(), None, 0)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user