Add preferences for controlling session timer behaviour
This commit is contained in:
+15
-10
@@ -91,6 +91,7 @@ class GuiDocEditor(QTextEdit):
|
||||
self.wordCount = 0 # Word count
|
||||
self.paraCount = 0 # Paragraph count
|
||||
self.lastEdit = 0 # Time stamp of last edit
|
||||
self.lastActive = 0 # Time stamp of last activity
|
||||
self.lastFind = None # Position of the last found search word
|
||||
self.bigDoc = False # Flag for very large document size
|
||||
self.doReplace = False # Switch to temporarily disable auto-replace
|
||||
@@ -169,15 +170,16 @@ class GuiDocEditor(QTextEdit):
|
||||
self.clear()
|
||||
self.wcTimer.stop()
|
||||
|
||||
self.theHandle = None
|
||||
self.charCount = 0
|
||||
self.wordCount = 0
|
||||
self.paraCount = 0
|
||||
self.lastEdit = 0
|
||||
self.lastFind = None
|
||||
self.bigDoc = False
|
||||
self.doReplace = False
|
||||
self.queuePos = None
|
||||
self.theHandle = None
|
||||
self.charCount = 0
|
||||
self.wordCount = 0
|
||||
self.paraCount = 0
|
||||
self.lastEdit = 0
|
||||
self.lastActive = 0
|
||||
self.lastFind = None
|
||||
self.bigDoc = False
|
||||
self.doReplace = False
|
||||
self.queuePos = None
|
||||
|
||||
self.setDocumentChanged(False)
|
||||
self.docHeader.setTitleFromHandle(self.theHandle)
|
||||
@@ -319,6 +321,7 @@ class GuiDocEditor(QTextEdit):
|
||||
logger.debug("Document highlighted in %.3f ms" % (1000*(afTime-bfTime)))
|
||||
|
||||
self.lastEdit = time()
|
||||
self.lastActive = time()
|
||||
self._runCounter()
|
||||
self.wcTimer.start()
|
||||
self.theHandle = tHandle
|
||||
@@ -722,6 +725,7 @@ class GuiDocEditor(QTextEdit):
|
||||
return False
|
||||
|
||||
self._allowAutoReplace(True)
|
||||
self.lastActive = time()
|
||||
|
||||
return True
|
||||
|
||||
@@ -839,6 +843,7 @@ class GuiDocEditor(QTextEdit):
|
||||
* The undo/redo/select all sequences bypasses the docAction
|
||||
pathway from the menu, so we redirect them back from here.
|
||||
"""
|
||||
self.lastActive = time()
|
||||
isReturn = keyEvent.key() == Qt.Key_Return
|
||||
isReturn |= keyEvent.key() == Qt.Key_Enter
|
||||
if isReturn and self.docSearch.anyFocus():
|
||||
@@ -1083,7 +1088,7 @@ class GuiDocEditor(QTextEdit):
|
||||
logger.verbose("Word counter is busy")
|
||||
return
|
||||
|
||||
if time() - self.lastEdit < 5*self.wcInterval:
|
||||
if time() - self.lastEdit < 5 * self.wcInterval:
|
||||
logger.verbose("Running word counter")
|
||||
self.theParent.threadPool.start(self.wCounter)
|
||||
|
||||
|
||||
@@ -358,6 +358,33 @@ class GuiPreferencesProjects(QWidget):
|
||||
"If off, backups will run in the background."
|
||||
)
|
||||
|
||||
# Session Timer
|
||||
# =============
|
||||
self.mainForm.addGroupLabel("Session Timer")
|
||||
|
||||
## Pause when idle
|
||||
self.stopWhenIdle = QSwitch()
|
||||
self.stopWhenIdle.setChecked(self.mainConf.stopWhenIdle)
|
||||
self.mainForm.addRow(
|
||||
"Pause the session timer when not writing",
|
||||
self.stopWhenIdle,
|
||||
"Also pauses when the application window does not have focus."
|
||||
)
|
||||
|
||||
## Inactive time for idle
|
||||
self.userIdleTime = QDoubleSpinBox()
|
||||
self.userIdleTime.setMinimum(0.5)
|
||||
self.userIdleTime.setMaximum(600.0)
|
||||
self.userIdleTime.setSingleStep(0.5)
|
||||
self.userIdleTime.setDecimals(1)
|
||||
self.userIdleTime.setValue(self.mainConf.userIdleTime/60.0)
|
||||
self.mainForm.addRow(
|
||||
"Editor inactive time before pausing timer",
|
||||
self.userIdleTime,
|
||||
"User activity includes typing and changing the content.",
|
||||
theUnit="minutes"
|
||||
)
|
||||
|
||||
return
|
||||
|
||||
def saveValues(self):
|
||||
@@ -372,6 +399,10 @@ class GuiPreferencesProjects(QWidget):
|
||||
self.mainConf.backupOnClose = self.backupOnClose.isChecked()
|
||||
self.mainConf.askBeforeBackup = self.askBeforeBackup.isChecked()
|
||||
|
||||
# Session Timer
|
||||
self.mainConf.stopWhenIdle = self.stopWhenIdle.isChecked()
|
||||
self.mainConf.userIdleTime = round(self.userIdleTime.value() * 60)
|
||||
|
||||
self.mainConf.confChanged = True
|
||||
|
||||
return
|
||||
|
||||
+8
-1
@@ -182,6 +182,9 @@ class GuiMainStatus(QStatusBar):
|
||||
def setUserIdle(self, userIdle):
|
||||
"""Change the idle status icon.
|
||||
"""
|
||||
if not self.mainConf.stopWhenIdle:
|
||||
userIdle = False
|
||||
|
||||
if self.userIdle != userIdle:
|
||||
if userIdle:
|
||||
self.timeIcon.setPixmap(self.idlePixmap)
|
||||
@@ -198,7 +201,11 @@ class GuiMainStatus(QStatusBar):
|
||||
if self.refTime is None:
|
||||
self.timeText.setText("00:00:00")
|
||||
else:
|
||||
self.timeText.setText(formatTime(round(time() - self.refTime - idleTime)))
|
||||
if self.mainConf.stopWhenIdle:
|
||||
sessTime = round(time() - self.refTime - idleTime)
|
||||
else:
|
||||
sessTime = round(time() - self.refTime)
|
||||
self.timeText.setText(formatTime(sessTime))
|
||||
return
|
||||
|
||||
# END Class GuiMainStatus
|
||||
|
||||
Reference in New Issue
Block a user