#!/usr/bin/python
# -*- coding: utf-8 -*-

import subprocess
import dbus
import dbus.service
from dbus import glib
from dbus.mainloop.glib import DBusGMainLoop
import gobject

skip = False;

def ussd_released (message, str):
	global skip
	if not skip:
		subprocess.Popen(["qussd", message])
	skip = False
	return True

def ussd_request (message, str):
	global skip
	if not skip:
		subprocess.Popen(["qussd", message, "lock"])
	skip = False
	return True

class DBusListener(dbus.service.Object):
	def __init__(self):
		bus_name = dbus.service.BusName('su.kibergus.ussdd', bus=dbus.SystemBus())
		dbus.service.Object.__init__(self, bus_name, '/su/kibergus/ussdd')

	@dbus.service.method(dbus_interface='su.kibergus.ussdd')
	def skip_next (self):
		global skip
		skip = True
		return True
	
	@dbus.service.method(dbus_interface='su.kibergus.ussdd')
	def show_next (self):
		global skip
		skip = False
		return True

gobject.threads_init()
glib.init_threads()

bus = dbus.SystemBus()
signal = bus.add_signal_receiver(ussd_released, path='/com/nokia/csd/ss',   dbus_interface='com.nokia.csd.SS.USSD', signal_name='Released')
signal = bus.add_signal_receiver(ussd_request, path='/com/nokia/csd/ss',   dbus_interface='com.nokia.csd.SS.USSD', signal_name='Request')

listener = DBusListener()

loop = gobject.MainLoop()
loop.run()

