summaryrefslogtreecommitdiffstats
path: root/Locker.py
diff options
context:
space:
mode:
Diffstat (limited to 'Locker.py')
-rw-r--r--Locker.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/Locker.py b/Locker.py
index 7871307..2af8f70 100644
--- a/Locker.py
+++ b/Locker.py
@@ -4,17 +4,18 @@ import Idle
class Locker(object):
- def __init__(self, lockTimeout, doLock, doUnlock, logoutTimeout = 0, doLogout = None):
+ def __init__(self, lockTimeout, doLock, doUnlock, logoutTimeout = 0, doLogout = None, updateLogoutTimeout = None):
self.locked = False
self.lockTimeout = lockTimeout
self.logoutTimeout = logoutTimeout
self.doLock = doLock
self.doUnlock = doUnlock
self.doLogout = doLogout
+ self.updateLogoutTimeout = updateLogoutTimeout
- GLib.timeout_add_seconds(1, self.checkLock)
+ GLib.timeout_add_seconds(1, self._checkLock)
- def checkLock(self):
+ def _checkLock(self):
if self.locked:
return False
@@ -25,14 +26,27 @@ class Locker(object):
else:
return True
+ def _checkLogout(self):
+ self.currentLogoutTimeout = self.currentLogoutTimeout - 1
+ if self.updateLogoutTimeout is not None:
+ self.updateLogoutTimeout(self.currentLogoutTimeout)
+
+ return self.currentLogoutTimeout > 0
+
def lock(self):
if not self.locked:
- self.doLock()
+ self.doLock(self.logoutTimeout)
self.locked = True
+ if self.doLogout is not None:
+ self.currentLogoutTimeout = self.logoutTimeout
+
+ if self.currentLogoutTimeout > 0:
+ GLib.timeout_add_seconds(1, self._checkLogout)
+
def unlock(self):
if self.locked:
self.doUnlock()
self.locked = False
- GLib.timeout_add(100, self.checkLock)
+ GLib.timeout_add_seconds(1, self._checkLock)