Add the possibility to display per backend unread mail along with the total number of unread mails (default). The displayed backend can be set via callbacks (on mousewheel events by default)
This commit is contained in:
parent
ff2794fa3d
commit
b9e23b18a7
@ -6,9 +6,10 @@ class Backend(SettingsBase):
|
|||||||
"""Handles the details of checking for mail"""
|
"""Handles the details of checking for mail"""
|
||||||
|
|
||||||
unread = 0
|
unread = 0
|
||||||
|
settings = ("account", )
|
||||||
# required = ("account", )
|
# required = ("account", )
|
||||||
|
|
||||||
# account = "Default account"
|
account = "Default account"
|
||||||
|
|
||||||
"""Number of unread mails
|
"""Number of unread mails
|
||||||
|
|
||||||
@ -38,13 +39,14 @@ class Mail(IntervalModule):
|
|||||||
color = "#ffffff"
|
color = "#ffffff"
|
||||||
color_unread = "#ff0000"
|
color_unread = "#ff0000"
|
||||||
format = "{unread} new email"
|
format = "{unread} new email"
|
||||||
format_plural = "{unread} new emails"
|
format_plural = "{account} : {current_unread}/{unread} new emails"
|
||||||
hide_if_null = True
|
hide_if_null = True
|
||||||
email_client = None
|
email_client = None
|
||||||
|
|
||||||
on_leftclick = "open_client"
|
on_leftclick = "open_client"
|
||||||
|
on_upscroll = ["scroll_backend", 1]
|
||||||
|
on_downscroll = ["scroll_backend", -1]
|
||||||
|
|
||||||
current_unread = 0
|
|
||||||
current_backend = 0
|
current_backend = 0
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
@ -55,8 +57,14 @@ class Mail(IntervalModule):
|
|||||||
"""
|
"""
|
||||||
Returns the sum of unread messages across all registered backends
|
Returns the sum of unread messages across all registered backends
|
||||||
"""
|
"""
|
||||||
|
unread = 0
|
||||||
unread = sum(map(lambda backend: backend.unread, self.backends))
|
current_unread = 0
|
||||||
|
for id, backend in enumerate(self.backends):
|
||||||
|
temp = backend.unread
|
||||||
|
unread = unread + backend.unread
|
||||||
|
if id == self.current_backend:
|
||||||
|
current_unread = temp
|
||||||
|
# unread = sum(map(lambda backend: backend.unread, self.backends))
|
||||||
|
|
||||||
if not unread:
|
if not unread:
|
||||||
color = self.color
|
color = self.color
|
||||||
@ -72,12 +80,18 @@ class Mail(IntervalModule):
|
|||||||
if unread > 1:
|
if unread > 1:
|
||||||
format = self.format_plural
|
format = self.format_plural
|
||||||
|
|
||||||
|
account_name = getattr(self.backends[self.current_backend], "account", "No name")
|
||||||
|
|
||||||
|
# TODO pass account name as well, as setting or via the dict
|
||||||
self.output = {
|
self.output = {
|
||||||
"full_text": format.format(unread=unread),
|
"full_text": format.format(unread=unread, current_unread=current_unread, account=account_name),
|
||||||
"urgent": urgent,
|
"urgent": urgent,
|
||||||
"color": color,
|
"color": color,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def scroll_backend(self, step):
|
||||||
|
self.current_backend = (self.current_backend + step) % len(self.backends)
|
||||||
|
|
||||||
def open_client(self):
|
def open_client(self):
|
||||||
if self.email_client:
|
if self.email_client:
|
||||||
retcode, _, stderr = run_through_shell(self.email_client)
|
retcode, _, stderr = run_through_shell(self.email_client)
|
||||||
|
@ -18,14 +18,16 @@ class Notmuch(Backend):
|
|||||||
|
|
||||||
settings = (
|
settings = (
|
||||||
("db_path", "Path to the directory of your notmuch database"),
|
("db_path", "Path to the directory of your notmuch database"),
|
||||||
|
("query", "Same query notmuch would accept, by default 'tag:unread and tag:inbox'"),
|
||||||
|
("account", "Account name"),
|
||||||
)
|
)
|
||||||
|
|
||||||
required = tuple( ("account", "Name available to formatter"), )
|
# required = tuple( ("account", "Name available to formatter"), )
|
||||||
|
|
||||||
db_path = None
|
db_path = None
|
||||||
query = "tag:unread and tag:inbox"
|
query = "tag:unread and tag:inbox"
|
||||||
|
|
||||||
account = "Default account"
|
account = "Default"
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
if not self.db_path:
|
if not self.db_path:
|
||||||
|
Loading…
Reference in New Issue
Block a user