[mrk] handle Google Apps For Your Domain. fixes #3163
This commit is contained in:
parent
6151b683ad
commit
3f5327dc6f
|
@ -800,6 +800,9 @@ class ConnectionDisco:
|
||||||
identities = [{'category': 'server', 'type': 'im', 'name': node}]
|
identities = [{'category': 'server', 'type': 'im', 'name': node}]
|
||||||
if id[0] == 'p':
|
if id[0] == 'p':
|
||||||
if jid == gajim.config.get_per('accounts', self.name, 'hostname'):
|
if jid == gajim.config.get_per('accounts', self.name, 'hostname'):
|
||||||
|
if features.__contains__(common.xmpp.NS_GMAILNOTIFY):
|
||||||
|
gajim.gmail_domains.append(jid)
|
||||||
|
self.request_gmail_notifications()
|
||||||
for identity in identities:
|
for identity in identities:
|
||||||
if identity['category'] == 'pubsub' and identity['type'] == \
|
if identity['category'] == 'pubsub' and identity['type'] == \
|
||||||
'pep':
|
'pep':
|
||||||
|
@ -1177,6 +1180,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
|
||||||
ConnectionBytestream.__init__(self)
|
ConnectionBytestream.__init__(self)
|
||||||
ConnectionCommands.__init__(self)
|
ConnectionCommands.__init__(self)
|
||||||
ConnectionPubSub.__init__(self)
|
ConnectionPubSub.__init__(self)
|
||||||
|
self.gmail_url=None
|
||||||
# List of IDs we are waiting answers for {id: (type_of_request, data), }
|
# List of IDs we are waiting answers for {id: (type_of_request, data), }
|
||||||
self.awaiting_answers = {}
|
self.awaiting_answers = {}
|
||||||
# List of IDs that will produce a timeout is answer doesn't arrive
|
# List of IDs that will produce a timeout is answer doesn't arrive
|
||||||
|
@ -1393,6 +1397,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
|
||||||
'''Called when we receive results from Querying the server for mail messages in gmail account'''
|
'''Called when we receive results from Querying the server for mail messages in gmail account'''
|
||||||
if not gm.getTag('mailbox'):
|
if not gm.getTag('mailbox'):
|
||||||
return
|
return
|
||||||
|
self.gmail_url = gm.getTag('mailbox').getAttr('url')
|
||||||
if gm.getTag('mailbox').getNamespace() == common.xmpp.NS_GMAILNOTIFY:
|
if gm.getTag('mailbox').getNamespace() == common.xmpp.NS_GMAILNOTIFY:
|
||||||
newmsgs = gm.getTag('mailbox').getAttr('total-matched')
|
newmsgs = gm.getTag('mailbox').getAttr('total-matched')
|
||||||
if newmsgs != '0':
|
if newmsgs != '0':
|
||||||
|
@ -1962,29 +1967,31 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
|
||||||
# Get annotations from private namespace
|
# Get annotations from private namespace
|
||||||
self.get_annotations()
|
self.get_annotations()
|
||||||
|
|
||||||
# If it's a gmail account,
|
|
||||||
# inform the server that we want e-mail notifications
|
|
||||||
if gajim.get_server_from_jid(our_jid) in gajim.gmail_domains:
|
|
||||||
gajim.log.debug(('%s is a gmail account. Setting option '
|
|
||||||
'to get e-mail notifications on the server.') % (our_jid))
|
|
||||||
iq = common.xmpp.Iq(typ = 'set', to = our_jid)
|
|
||||||
iq.setAttr('id', 'MailNotify')
|
|
||||||
query = iq.setTag('usersetting')
|
|
||||||
query.setNamespace(common.xmpp.NS_GTALKSETTING)
|
|
||||||
query = query.setTag('mailnotifications')
|
|
||||||
query.setAttr('value', 'true')
|
|
||||||
self.connection.send(iq)
|
|
||||||
# Ask how many messages there are now
|
|
||||||
iq = common.xmpp.Iq(typ = 'get')
|
|
||||||
iq.setAttr('id', '13')
|
|
||||||
query = iq.setTag('query')
|
|
||||||
query.setNamespace(common.xmpp.NS_GMAILNOTIFY)
|
|
||||||
self.connection.send(iq)
|
|
||||||
|
|
||||||
#Inform GUI we just signed in
|
#Inform GUI we just signed in
|
||||||
self.dispatch('SIGNED_IN', ())
|
self.dispatch('SIGNED_IN', ())
|
||||||
self.continue_connect_info = None
|
self.continue_connect_info = None
|
||||||
|
|
||||||
|
def request_gmail_notifications(self):
|
||||||
|
# It's a gmail account,
|
||||||
|
# inform the server that we want e-mail notifications
|
||||||
|
our_jid = helpers.parse_jid(gajim.get_jid_from_account(self.name))
|
||||||
|
gajim.log.debug(('%s is a gmail account. Setting option '
|
||||||
|
'to get e-mail notifications on the server.') % (our_jid))
|
||||||
|
iq = common.xmpp.Iq(typ = 'set', to = our_jid)
|
||||||
|
iq.setAttr('id', 'MailNotify')
|
||||||
|
query = iq.setTag('usersetting')
|
||||||
|
query.setNamespace(common.xmpp.NS_GTALKSETTING)
|
||||||
|
query = query.setTag('mailnotifications')
|
||||||
|
query.setAttr('value', 'true')
|
||||||
|
self.connection.send(iq)
|
||||||
|
# Ask how many messages there are now
|
||||||
|
iq = common.xmpp.Iq(typ = 'get')
|
||||||
|
iq.setID(self.connection.getAnID())
|
||||||
|
query = iq.setTag('query')
|
||||||
|
query.setNamespace(common.xmpp.NS_GMAILNOTIFY)
|
||||||
|
self.connection.send(iq)
|
||||||
|
|
||||||
|
|
||||||
def _search_fields_received(self, con, iq_obj):
|
def _search_fields_received(self, con, iq_obj):
|
||||||
jid = jid = helpers.get_jid_from_iq(iq_obj)
|
jid = jid = helpers.get_jid_from_iq(iq_obj)
|
||||||
tag = iq_obj.getTag('query', namespace = common.xmpp.NS_SEARCH)
|
tag = iq_obj.getTag('query', namespace = common.xmpp.NS_SEARCH)
|
||||||
|
|
|
@ -2230,9 +2230,9 @@ class Interface:
|
||||||
# Open the window
|
# Open the window
|
||||||
self.roster.open_event(account, fjid, event)
|
self.roster.open_event(account, fjid, event)
|
||||||
elif type_ == 'gmail':
|
elif type_ == 'gmail':
|
||||||
url = 'http://mail.google.com/mail?account_id=%s' % urllib.quote(
|
url=gajim.connections[account].gmail_url
|
||||||
gajim.config.get_per('accounts', account, 'name'))
|
if url:
|
||||||
helpers.launch_browser_mailer('url', url)
|
helpers.launch_browser_mailer('url', url)
|
||||||
elif type_ == 'gc-invitation':
|
elif type_ == 'gc-invitation':
|
||||||
event = gajim.events.get_first_event(account, jid, type_)
|
event = gajim.events.get_first_event(account, jid, type_)
|
||||||
data = event.parameters
|
data = event.parameters
|
||||||
|
|
|
@ -2846,9 +2846,9 @@ class RosterWindow:
|
||||||
gajim.interface.instances['accounts'].select_account(account)
|
gajim.interface.instances['accounts'].select_account(account)
|
||||||
|
|
||||||
def on_open_gmail_inbox(self, widget, account):
|
def on_open_gmail_inbox(self, widget, account):
|
||||||
url = 'http://mail.google.com/mail?account_id=%s' % urllib.quote(
|
url = gajim.connections[account].gmail_url
|
||||||
gajim.config.get_per('accounts', account, 'name'))
|
if url:
|
||||||
helpers.launch_browser_mailer('url', url)
|
helpers.launch_browser_mailer('url', url)
|
||||||
|
|
||||||
def on_change_status_message_activate(self, widget, account):
|
def on_change_status_message_activate(self, widget, account):
|
||||||
show = gajim.SHOW_LIST[gajim.connections[account].connected]
|
show = gajim.SHOW_LIST[gajim.connections[account].connected]
|
||||||
|
@ -2914,8 +2914,7 @@ class RosterWindow:
|
||||||
sub_menu.append(item)
|
sub_menu.append(item)
|
||||||
item.connect('activate', self.change_status, account, 'offline')
|
item.connect('activate', self.change_status, account, 'offline')
|
||||||
|
|
||||||
if gajim.config.get_per('accounts', account, 'hostname') not in \
|
if not gajim.connections[account].gmail_url:
|
||||||
gajim.gmail_domains:
|
|
||||||
open_gmail_inbox_menuitem.set_no_show_all(True)
|
open_gmail_inbox_menuitem.set_no_show_all(True)
|
||||||
open_gmail_inbox_menuitem.hide()
|
open_gmail_inbox_menuitem.hide()
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue