From c0b4e4bd7424ac8e2eccce0203a9b7b2bb6cb57a Mon Sep 17 00:00:00 2001 From: user Date: Mon, 27 Jun 2011 17:38:22 +0300 Subject: [PATCH] init commit --- debug.py | 20 +++++ makeprofile-appointments.py | 75 ++++++++++++++++ profile-appointments.desktop | 5 ++ profile-appointments.png | Bin 0 -> 1906 bytes profile-appointments.py | 71 +++++++++++++++ profile-appointments.sudoers | 1 + profile-appointments_0.0.1-1.changes | 18 ++++ profile-appointments_0.0.1-1.dsc | 10 +++ profile-appointments_0.0.1-1.tar.gz | Bin 0 -> 10792 bytes profile-appointments_0.0.1-1_all.deb | Bin 0 -> 9324 bytes switch_backend | 63 ++++++++++++++ switch_backend.py | 159 ++++++++++++++++++++++++++++++++++ 12 files changed, 422 insertions(+) create mode 100755 debug.py create mode 100755 makeprofile-appointments.py create mode 100644 profile-appointments.desktop create mode 100644 profile-appointments.png create mode 100755 profile-appointments.py create mode 100644 profile-appointments.sudoers create mode 100644 profile-appointments_0.0.1-1.changes create mode 100644 profile-appointments_0.0.1-1.dsc create mode 100644 profile-appointments_0.0.1-1.tar.gz create mode 100644 profile-appointments_0.0.1-1_all.deb create mode 100755 switch_backend create mode 100755 switch_backend.py diff --git a/debug.py b/debug.py new file mode 100755 index 0000000..16c7db2 --- /dev/null +++ b/debug.py @@ -0,0 +1,20 @@ +import os,time + +if os.path.exists("/tmp/switch.debug"): +if True: + enable_logging = True +else: + enable_logging = False + +if enable_logging and not 'fd' in locals(): + fd = open('/tmp/switch.log','w+') +else: + fd = None + +def debug(*input): + if enable_logging: + now = str(time.time()) + print now+str(input) + print >>fd,now+str(input) + fd.flush() + diff --git a/makeprofile-appointments.py b/makeprofile-appointments.py new file mode 100755 index 0000000..d392f45 --- /dev/null +++ b/makeprofile-appointments.py @@ -0,0 +1,75 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +import pypackager +import os + +if __name__ == "__main__": + try: + os.chdir(os.path.dirname(sys.argv[0])) + except: + pass + + p=pypackager.PyPackager("profile-appointments") + p.version='0.0.1' + p.buildversion='1' + p.display_name='profile-appointments' + p.description="widget to switch profile to silent when a meeting is in progress , and switch back to general afterward" + p.author="Niv Waizer" + p.maintainer="Niv Waizer" + p.email="nivwiz@gmail.com" + p.depends = "python-hildon (>= 0.9.0-1maemo15), python-hildondesktop (>= 0.1.0-1maemo3), python-gtk2 (>= 2.12.1-6maemo10), python-gobject (>= 2.16), hildon-desktop-python-loader (>= 0.1.0-1maemo3), python-dbus, sudo, python, python-support (>= 0.90.0), python2.5, python-dbus, python-mafw" + p.section="user/development" + p.arch="all" + p.urgency="extra" + p.bugtracker='http://unknown' + p.distribution="fremantle" + p.repository="extras-devel" + p.icon='profile-appointments.png' + p["/etc/init.d"] = ["switch_backend",] + p["/usr/lib/hildon-desktop"] = ["profile-appointments.py",] + p["/usr/lib/switchProfByMeeting"] = ["debug.py", "switch_backend.py",] + p["/usr/share/icons/hicolor/32x32/hildon"] = ["profile-appointments.png",] + p["/etc/sudoers.d"] = ["profile-appointments.sudoers",] + p["/usr/share/applications/hildon-status-menu"] = ["profile-appointments.desktop",] + + p.postinstall = """#!/bin/sh +update-sudoers || true + +gtk-update-icon-cache /usr/share/icons/hicolor/ + +#chmod 755".join(p['/usr/...'] +for file in /etc/init.d/switch_backend /usr/lib/switchProfByMeeting/switch_backend.py ; do +chmod 755 $file +done +for file in /usr/share/applications/hildon-status-menu/profile-appointments.desktop /usr/lib/hildon-desktop/profile-appointments.py ; do +chmod 644 $file +chown root:root $file +done +#Force applet reloading to get the icon + echo "Reloading switchByProfile" + TMPFILE=`mktemp /tmp/temp.XXXXXX` + mv /usr/share/applications/hildon-status-menu/profile-appointments.desktop $TMPFILE + sleep 2 + mv $TMPFILE /usr/share/applications/hildon-status-menu/profile-appointments.desktop + rm -f $TMPFILE + +# Automatically added by dh_pysupport +#if which update-python-modules >/dev/null 2>&1; then +# update-python-modules openvpn-applet.private +#fi +exit 0 +""" + + p.changelog="""First Release +""" + +print p.generate(build_binary=True,build_src=True) diff --git a/profile-appointments.desktop b/profile-appointments.desktop new file mode 100644 index 0000000..0cc3850 --- /dev/null +++ b/profile-appointments.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=switch profile by meeting +#Comment=Example Status Menu Python plugin +Type=python +X-Path=profile-appointments.py diff --git a/profile-appointments.png b/profile-appointments.png new file mode 100644 index 0000000000000000000000000000000000000000..68f39af103013fe5300ddf4a909bcc5f4a6d002b GIT binary patch literal 1906 zcmV-&2aWiNP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb) z6cHUY_NY|=00#0&L_t(o!|hjlP*m3$|DAohuplfJaaA6Y1xo}a0u7BF)HDwhsfy_& z)H#M%L z8vv3!H8ei+?qmQP0X!`Te7Y%h0E0JmSbacMR=h^pQAxBn{%amE{9^y}o&@I(eNjie z=IDHg%nXLD7ML6sJlI`V0H9^ecCV0HE=3#9 zqaI#i;2|@ z#o?t$jL8b?=Uf+Ioc9iRo(H8AE|&)YAeBlIi1%zlK z84D8U(oc@FLYqn&>Cs&GVW?`1<@nE0Hc^NXXG7L~3d)95Z7$56! zxWKYBY%ZlT26DL!l(KtDN(!p)$OBS^WL=6PVL6<>u*IADc7iSb81AA&=rw;D)Tc`q z#47IV0L!uwZDhm_hG9Smd9JSR(6Ze^=A*X-@V1bdqASsy5EG&%c5mp<9hWhEsSi8^ z@DLzb*aWThbg(~vQaO|hTcU#S`TR&rOW#{fdd}V!z^_P;F(oE3+s9K3J8dC17aqhQ z>kMmc&+miTeLZMX99seM<3_M7i}**Hg8+O!KkRk~2ob4w?W+6PE*pkF!UPGX^ibbQB+8&?gt8te6108mWGggl4< z05vuHGgYeOpA$kbNIMw-;CRFdf*_0^c-?=>aq2x?&EdlzwCBbzAzG$2j0EcIYt>`# z>(_5=0RWfF9>KoB4*|ptKz8QL=?51rdT6^+8HX=F3}x7?RiQyX-i`AOmUx|RU`s}Z zW^MDo1|%#?F&^WpRda*y3l=P#PY7VM*#Lk}2;kSGvloDpQVv$D6+=T-g#U9$tAS-%P#R7s z0ATlxI366wgXc$E z*GV@d^ZGGcRW!;-QWf%(9zvd~1X7V~l>Mj+A2obzrb|v$QE^o0!C|&qqGJ`iborfKC9eySLd%ao-**`G1TcGIiXHoGqNophcBpaU=jfcq}*hB5#N sfs`r^Jeh#r6WC){;HYu 0: + print "DEBUG: backend start exit code " + str(status) + ", output: \n" + note = hildon.hildon_note_new_information(self.mainwindow, 'profile-appointments failed to start') + response = gtk.Dialog.run(note) + note.destroy() + return + self.backend_started = True + + def stop_backend(self): + """kills backend""" + (exitstatus, outtext) = commands.getstatusoutput("""/etc/init.d/switch_backend stop""") + if exitstatus <> 0: + print "DEBUG: backend start exit code " + str(status) + ", output: \n" + note = hildon.hildon_note_new_information(self.mainwindow, 'profile-appointments failed to start') + response = gtk.Dialog.run(note) + note.destroy() + return + self.backend_started = False + +hd_plugin_type = ExampleStatusPlugin diff --git a/profile-appointments.sudoers b/profile-appointments.sudoers new file mode 100644 index 0000000..c24201c --- /dev/null +++ b/profile-appointments.sudoers @@ -0,0 +1 @@ +user ALL = NOPASSWD: /etc/init.d/switch_backend diff --git a/profile-appointments_0.0.1-1.changes b/profile-appointments_0.0.1-1.changes new file mode 100644 index 0000000..0e63b4b --- /dev/null +++ b/profile-appointments_0.0.1-1.changes @@ -0,0 +1,18 @@ +Maintainer: Niv Waizer +Format: 1.7 +Source: profile-appointments +Version: 0.0.1-1 +Architecture: all +Date: Mon, 27 Jun 2011 04:33:49 +0000 +Distribution: fremantle +Urgency: extra +Description: + widget to switch profile to silent when a meeting is in progress , and switch back to general afterward +Changes: + First Release + +Changed-By: Niv Waizer +Files: + 9da9e14fd9c6b4780bd0a7e9f60fc18a 10792 user/development extras-devel profile-appointments_0.0.1-1.tar.gz + 08ab4b189d654976ce09cc3334113ddd 520 user/development extras-devel profile-appointments_0.0.1-1.dsc + diff --git a/profile-appointments_0.0.1-1.dsc b/profile-appointments_0.0.1-1.dsc new file mode 100644 index 0000000..72c8dd5 --- /dev/null +++ b/profile-appointments_0.0.1-1.dsc @@ -0,0 +1,10 @@ +Source: profile-appointments +Version: 0.0.1-1 +Maintainer: Niv Waizer +Architecture: all +Format: 1.0 +Build-Depends: python-hildon (>= 0.9.0-1maemo15), python-hildondesktop (>= 0.1.0-1maemo3), python-gtk2 (>= 2.12.1-6maemo10), python-gobject (>= 2.16), hildon-desktop-python-loader (>= 0.1.0-1maemo3), python-dbus, sudo, python, python-support (>= 0.90.0), python2.5, python-dbus, python-mafw +Standards-Version: 0.0.1-1 +Files: + 9da9e14fd9c6b4780bd0a7e9f60fc18a 10792 profile-appointments_0.0.1-1.tar.gz + diff --git a/profile-appointments_0.0.1-1.tar.gz b/profile-appointments_0.0.1-1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..857f1f0c0ccfe15551def5d6747c4dcbe5bc5903 GIT binary patch literal 10792 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 literal 0 HcmV?d00001 diff --git a/profile-appointments_0.0.1-1_all.deb b/profile-appointments_0.0.1-1_all.deb new file mode 100644 index 0000000000000000000000000000000000000000..2add4aff2417b3876a2989937c96cf270e5e4494 GIT binary patch literal 9324 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 K2E+#h&2 + exit 1 + ;; +esac + +exit 0 diff --git a/switch_backend.py b/switch_backend.py new file mode 100755 index 0000000..3b73fe0 --- /dev/null +++ b/switch_backend.py @@ -0,0 +1,159 @@ +#!/usr/bin/run-standalone.sh python2.5 + +# Import global modules +import sys, traceback, gobject, dbus, dbus.mainloop.glib ,os , subprocess +import time, sqlite3,mafw +sys.path.insert(0, '/usr/lib/switchProfByMeeting') +import debug +debug = debug.debug + +sys.path.insert(0, '/home/user') +dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + +class backend: + def __init__( self ): + #debug( 'init' ) + self.bus = dbus.SessionBus() + self.sleep_duration = 10000 + self.timeout_id = None + self.loop = None + + try: + self.profiled_object = self.bus.get_object( 'com.nokia.profiled', '/com/nokia/profiled' ) + self.calender_object = self.bus.get_object( 'com.nokia.calendar', '/com/nokia/calendar' ) + self.calender_object.connect_to_signal( 'dbChange', \ + self.calender_changed, dbus_interface = 'com.nokia.calendar' ) + self.mafw_object = self.bus.get_object( \ + 'com.nokia.mafw.renderer.Mafw-Gst-Renderer-Plugin.gstrenderer' \ + ,'/com/nokia/mafw/renderer/gstrenderer' ) + except dbus.DBusException: + traceback.print_exc() + sys.exit(1) + + self.start() + + def set_profile( self, prof ): + debug ('in set_profile with '+prof) + #save speaker volume as profile change effects it + volume_level = self.mafw_object.get_extension_property( 'volume' \ + , dbus_interface = 'com.nokia.mafw.extension')[1] + self.profiled_object.set_profile(prof, dbus_interface='com.nokia.profiled') + #restore volume level due to profile change + retcode = subprocess.call("dbus-send --type=method_call \ + --dest=com.nokia.mafw.renderer.Mafw-Gst-Renderer-Plugin.gstrenderer \ + /com/nokia/mafw/renderer/gstrenderer \ + com.nokia.mafw.extension.set_extension_property \ + string:volume variant:uint32:%d"%volume_level, shell=True) + if retcode != 0: + raise SystemExit('got error code '+str(retcode)+' when setting volume') + + def is_meeting_now( self ): + cal_db = sqlite3.connect(os.path.expanduser("~/.calendar/calendardb")) + query = "SELECT Summary FROM Components WHERE ComponentType='1' \ + AND AllDay='0' AND strftime('%s','now') >= DateStart AND \ + strftime('%s','now') < DateEnd limit 1" + ans = cal_db.execute(query).fetchone() + debug( 'is_meeting_now returns: '+str(ans) ) + return ans + + def when_next_meeting( self ): + cal_db = sqlite3.connect(os.path.expanduser("~/.calendar/calendardb")) + query = "SELECT DateStart FROM Components WHERE ComponentType='1' \ + and AllDay='0' and strftime('%s','now') < DateStart AND \ + DateStart < DateEnd ORDER BY DateStart limit 1" + #here is the place to make sure the meeting is leagal non zero duration and event + ans = cal_db.execute(query).fetchone() + if ans != None: + next_timeout = ans [0] + else: + next_timeout = None + debug( 'when_next_meeting returns: '+str(next_timeout) ) + return next_timeout + + def when_end_of_meeting( self ): + cal_db = sqlite3.connect(os.path.expanduser("~/.calendar/calendardb")) + query = "SELECT DateEnd FROM Components WHERE ComponentType='1' \ + and AllDay='0' and strftime('%s','now') < DateEnd and \ + DateStart < DateEnd ORDER BY DateEnd limit 1" + #I also need to adress overlapping meetings that the other finishes later + next_timeout = cal_db.execute(query).fetchone() [0] + debug( 'when_end_of_meeting returns: ' +str(next_timeout) ) + return next_timeout + + def calc_next_duration( self, next_meeting_time ): + if next_meeting_time != None: + self.sleep_duration = int ((next_meeting_time - time.time())*1000) + else: + self.sleep_duration = 5000 + debug("calc_next_duration returns: "+str(self.sleep_duration)) + + def set_timer( self, current_profile ): + if current_profile == 'general' : + self.calc_next_duration( self.when_next_meeting() ) + else : + self.calc_next_duration( self.when_end_of_meeting() ) + + def calender_changed( self, arg1 , arg2 ): + debug('calender_changed called with arg1: '+arg1+' arg2: '+arg2 ) + self.remove_timeout() + self.update_profile() + self.mainloop() + debug ('end of calender_changed') + + def timer_callback( self ): + debug('timer_callback timeout_id: '+str(self.timeout_id)) + self.remove_timeout() + self.update_profile() + self.mainloop() + #commented by merlin 1991 advice self.mainloop() + debug('end of timer_callback') + + def remove_timeout( self ): + debug ( 'remove timeout called' ) + if self.timeout_id != None: + gobject.source_remove(self.timeout_id) + debug( 'removed timeout: '+str(self.timeout_id) ) + + def update_profile( self ): + debug ( 'begining of update_profile' ) + if self.is_meeting_now() : + self.set_profile( 'silent' ) + self.set_timer( 'silent' ) + else: + self.set_profile( 'general' ) + self.set_timer( 'general' ) + + def mainloop( self ): + debug('going to run loop with sleep_duration: '+str(self.sleep_duration)) + self.timeout_id = gobject.timeout_add(self.sleep_duration, self.timer_callback ) + debug( ' new timeou_id is: '+str(self.timeout_id) ) + + if self.loop == None : + self.loop = gobject.MainLoop() + self.loop.run() + debug('new loop started') + debug ('end of mainloop') + + def start ( self ): + ''' update the profile and set a timer loop''' + debug( 'starting' ) + self.update_profile() + self.mainloop() + + def stop_mainloop( self ): + ''' stop nain loop''' + debug( 'stopping main loop' ) + if self.loop != None and self.loop.is_running(): + self.loop.quit() + + def status( self ): + '''check the status of the switch backend''' + if self.loop != None: + status = self.loop.is_running() + else: + status = None + debug( 'status is: '+status) + return status + +if __name__ == "__main__": + backend = backend() -- 1.7.9.5