Check for PC updates: Daily, weekly, on start, never

This commit is contained in:
Kiooeht 2011-06-17 13:52:03 -07:00
parent 820d4f846d
commit 070b785bdb
3 changed files with 65 additions and 14 deletions

View file

@ -12,6 +12,8 @@ Features
* "someone has friended you" notifier * "someone has friended you" notifier
* MSPA update notifier option * MSPA update notifier option
* Don't animate emotes not in current tab * Don't animate emotes not in current tab
* Humanify times > 24 hours
* Show true bans?
Bugs Bugs
---- ----

View file

@ -1020,8 +1020,17 @@ class PesterOptions(QtGui.QDialog):
layout_5.addWidget(QtGui.QLabel("Minutes before Idle:")) layout_5.addWidget(QtGui.QLabel("Minutes before Idle:"))
layout_5.addWidget(self.idleBox) layout_5.addWidget(self.idleBox)
self.updatecheck = QtGui.QCheckBox("Check for Updates on Start", self) self.updateBox = QtGui.QComboBox(self)
self.updatecheck.setChecked(self.config.checkForUpdates()) self.updateBox.addItem("Once a Day")
self.updateBox.addItem("Once a Week")
self.updateBox.addItem("Only on Start")
self.updateBox.addItem("Never")
check = self.config.checkForUpdates()
if check >= 0 and check < self.updateBox.count():
self.updateBox.setCurrentIndex(check)
layout_6 = QtGui.QHBoxLayout()
layout_6.addWidget(QtGui.QLabel("Check for\nPesterchum Updates:"))
layout_6.addWidget(self.updateBox)
if parent.randhandler.running: if parent.randhandler.running:
self.randomscheck = QtGui.QCheckBox("Receive Random Encounters") self.randomscheck = QtGui.QCheckBox("Receive Random Encounters")
@ -1131,7 +1140,7 @@ class PesterOptions(QtGui.QDialog):
layout_idle = QtGui.QVBoxLayout(widget) layout_idle = QtGui.QVBoxLayout(widget)
layout_idle.setAlignment(QtCore.Qt.AlignTop) layout_idle.setAlignment(QtCore.Qt.AlignTop)
layout_idle.addLayout(layout_5) layout_idle.addLayout(layout_5)
layout_idle.addWidget(self.updatecheck) layout_idle.addLayout(layout_6)
self.pages.addWidget(widget) self.pages.addWidget(widget)
# Theme # Theme

View file

@ -12,7 +12,7 @@ import codecs
import re import re
import socket import socket
import platform import platform
from time import strftime from time import strftime, time
missing = [] missing = []
try: try:
@ -408,7 +408,17 @@ class userConfig(object):
def animations(self): def animations(self):
return self.config.get('animations', True) return self.config.get('animations', True)
def checkForUpdates(self): def checkForUpdates(self):
return self.config.get('checkUpdates', True) u = self.config.get('checkUpdates', 0)
if type(u) == type(bool()):
if u: u = 2
else: u = 3
return u
# Once a day
# Once a week
# Only on start
# Never
def lastUCheck(self):
return self.config.get('lastUCheck', 0)
def addChum(self, chum): def addChum(self, chum):
if chum.handle not in self.chums(): if chum.handle not in self.chums():
fp = open(self.filename) # what if we have two clients open?? fp = open(self.filename) # what if we have two clients open??
@ -2629,7 +2639,7 @@ class PesterWindow(MovingWindow):
self.config.set('animations', animatesetting) self.config.set('animations', animatesetting)
self.animationSetting.emit(animatesetting) self.animationSetting.emit(animatesetting)
# update checked # update checked
updatechecksetting = self.optionmenu.updatecheck.isChecked() updatechecksetting = self.optionmenu.updateBox.currentIndex()
curupdatecheck = self.config.checkForUpdates() curupdatecheck = self.config.checkForUpdates()
if updatechecksetting != curupdatecheck: if updatechecksetting != curupdatecheck:
self.config.set('checkUpdates', updatechecksetting) self.config.set('checkUpdates', updatechecksetting)
@ -2922,14 +2932,44 @@ class MainProgram(QtCore.QObject):
self.irc = PesterIRC(self.widget.config, self.widget) self.irc = PesterIRC(self.widget.config, self.widget)
self.connectWidgets(self.irc, self.widget) self.connectWidgets(self.irc, self.widget)
if self.widget.config.checkForUpdates(): # 0 Once a day
import Queue # 1 Once a week
import threading # 2 Only on start
q = Queue.Queue(1) # 3 Never
s = threading.Thread(target=version.updateCheck, args=(q,0)) # the 0 is to stop check = self.widget.config.checkForUpdates()
w = threading.Thread(target=self.showUpdate, args=(q,0)) # stupid syntax errors if check == 2:
w.start() self.runUpdateSlot()
s.start() elif check == 0:
seconds = 60 * 60 * 24
if int(time()) - self.widget.config.lastUCheck() < seconds:
seconds -= int(time()) - self.widget.config.lastUCheck()
if seconds < 0: seconds = 0
QtCore.QTimer.singleShot(1000*seconds, self, QtCore.SLOT('runUpdateSlot()'))
elif check == 1:
seconds = 60 * 60 * 24 * 7
if int(time()) - self.widget.config.lastUCheck() < seconds:
seconds -= int(time()) - self.widget.config.lastUCheck()
if seconds < 0: seconds = 0
QtCore.QTimer.singleShot(1000*seconds, self, QtCore.SLOT('runUpdateSlot()'))
@QtCore.pyqtSlot()
def runUpdateSlot(self):
import Queue
import threading
q = Queue.Queue(1)
s = threading.Thread(target=version.updateCheck, args=(q,0)) # the 0 is to stop
w = threading.Thread(target=self.showUpdate, args=(q,0)) # stupid syntax errors
w.start()
s.start()
self.widget.config.set('lastUCheck', int(time()))
check = self.widget.config.checkForUpdates()
if check == 0:
seconds = 60 * 60 * 24
elif check == 1:
seconds = 60 * 60 * 24 * 7
else:
return
QtCore.QTimer.singleShot(1000*seconds, self, QtCore.SLOT('runUpdateSlot()'))
widget2irc = [('sendMessage(QString, QString)', widget2irc = [('sendMessage(QString, QString)',
'sendMessage(QString, QString)'), 'sendMessage(QString, QString)'),