Chum sorting options: Alphabetical, Mood.
Chum list options menu fix
This commit is contained in:
parent
308024a93b
commit
926efa748e
2 changed files with 56 additions and 16 deletions
10
menus.py
10
menus.py
|
@ -600,6 +600,14 @@ class PesterOptions(QtGui.QDialog):
|
|||
self.showonlinenumbers = QtGui.QCheckBox("Show Number of Online Chums", self)
|
||||
self.showonlinenumbers.setChecked(self.config.showOnlineNumbers())
|
||||
|
||||
sortLabel = QtGui.QLabel("Sort Chums")
|
||||
self.sortBox = QtGui.QComboBox(self)
|
||||
self.sortBox.addItem("Alphabetically")
|
||||
self.sortBox.addItem("By Mood")
|
||||
method = self.config.sortMethod()
|
||||
if method >= 0 and method < self.sortBox.count():
|
||||
self.sortBox.setCurrentIndex(method)
|
||||
|
||||
self.ok = QtGui.QPushButton("OK", self)
|
||||
self.ok.setDefault(True)
|
||||
self.connect(self.ok, QtCore.SIGNAL('clicked()'),
|
||||
|
@ -618,6 +626,8 @@ class PesterOptions(QtGui.QDialog):
|
|||
#layout_0.addWidget(self.groupscheck)
|
||||
layout_0.addWidget(self.showemptycheck)
|
||||
layout_0.addWidget(self.showonlinenumbers)
|
||||
layout_0.addWidget(sortLabel)
|
||||
layout_0.addWidget(self.sortBox)
|
||||
layout_0.addWidget(hr)
|
||||
layout_0.addWidget(self.timestampcheck)
|
||||
layout_0.addWidget(self.timestampBox)
|
||||
|
|
|
@ -286,6 +286,8 @@ class userConfig(object):
|
|||
if not self.config.has_key('showSeconds'):
|
||||
self.set("showSeconds", False)
|
||||
return self.config.get('showSeconds', False)
|
||||
def sortMethod(self):
|
||||
return self.config.get('sortMethod', 0)
|
||||
def useGroups(self):
|
||||
if not self.config.has_key('useGroups'):
|
||||
self.set("useGroups", False)
|
||||
|
@ -570,7 +572,7 @@ class chumArea(RightClickTree):
|
|||
#self.sortItems(1, QtCore.Qt.AscendingOrder)
|
||||
self.setSortingEnabled(False)
|
||||
self.header().hide()
|
||||
self.setDropIndicatorShown(False)
|
||||
self.setDropIndicatorShown(True)
|
||||
self.setIndentation(0)
|
||||
self.setDragEnabled(True)
|
||||
self.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
|
||||
|
@ -579,17 +581,17 @@ class chumArea(RightClickTree):
|
|||
self, QtCore.SLOT('expandGroup()'))
|
||||
|
||||
def getOptionsMenu(self):
|
||||
currenthandle = self.currentItem().chum.handle
|
||||
if currenthandle in canon_handles:
|
||||
return self.canonMenu
|
||||
text = str(self.currentItem().text(0))
|
||||
if text.rfind(" ") != -1:
|
||||
text = text[0:text.rfind(" ")]
|
||||
if text == "Chums":
|
||||
return self.groupMenu
|
||||
elif text in self.groups:
|
||||
return self.groupMenu
|
||||
else:
|
||||
text = str(self.currentItem().text(0))
|
||||
if text.rfind(" ") != -1:
|
||||
text = text[0:text.rfind(" ")]
|
||||
if text == "Chums":
|
||||
return self.groupMenu
|
||||
elif text in self.groups:
|
||||
return self.groupMenu
|
||||
currenthandle = self.currentItem().chum.handle
|
||||
if currenthandle in canon_handles:
|
||||
return self.canonMenu
|
||||
else:
|
||||
return self.optionsMenu
|
||||
|
||||
|
@ -666,7 +668,7 @@ class chumArea(RightClickTree):
|
|||
else:
|
||||
i += 1
|
||||
listing = self.topLevelItem(j).child(i)
|
||||
self.topLevelItem(j).sortChildren(0, QtCore.Qt.AscendingOrder)
|
||||
self.sort()
|
||||
def showAllGroups(self):
|
||||
curgroups = []
|
||||
for i in range(self.topLevelItemCount()):
|
||||
|
@ -758,7 +760,7 @@ class chumArea(RightClickTree):
|
|||
if self.mainwindow.config.openDefaultGroup():
|
||||
child_1.setExpanded(True)
|
||||
self.topLevelItem(0).addChild(chumLabel)
|
||||
self.topLevelItem(0).sortChildren(0, QtCore.Qt.AscendingOrder)
|
||||
self.sort()
|
||||
else:
|
||||
if not self.findItems(chumLabel.handle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive):
|
||||
if not self.findItems(chumLabel.chum.group, QtCore.Qt.MatchContains):
|
||||
|
@ -773,7 +775,7 @@ class chumArea(RightClickTree):
|
|||
if text == chumLabel.chum.group:
|
||||
break
|
||||
self.topLevelItem(i).addChild(chumLabel)
|
||||
self.topLevelItem(i).sortChildren(0, QtCore.Qt.AscendingOrder)
|
||||
self.sort()
|
||||
else: # usually means this is now the trollslum
|
||||
if not self.findItems(chumLabel.handle, QtCore.Qt.MatchContains | QtCore.Qt.MatchRecursive):
|
||||
self.topLevelItem(0).addChild(chumLabel)
|
||||
|
@ -806,8 +808,12 @@ class chumArea(RightClickTree):
|
|||
self.takeItem(self.row(c))
|
||||
chums = []
|
||||
for c in chums:
|
||||
oldmood = c.mood
|
||||
c.setMood(mood)
|
||||
if (hasattr(c, 'mood')):
|
||||
oldmood = c.mood
|
||||
c.setMood(mood)
|
||||
if self.mainwindow.config.sortMethod() == 1:
|
||||
for i in range(self.topLevelItemCount()):
|
||||
self.moodSort(i)
|
||||
if self.mainwindow.config.showOnlineNumbers():
|
||||
self.showOnlineNumbers()
|
||||
return oldmood
|
||||
|
@ -844,6 +850,24 @@ class chumArea(RightClickTree):
|
|||
for i in range(self.topLevelItemCount()):
|
||||
c = c + self.topLevelItem(i).childCount()
|
||||
return c
|
||||
|
||||
def sort(self):
|
||||
if self.mainwindow.config.sortMethod() == 1:
|
||||
for i in range(self.topLevelItemCount()):
|
||||
self.moodSort(i)
|
||||
else:
|
||||
for i in range(self.topLevelItemCount()):
|
||||
self.topLevelItem(i).sortChildren(0, QtCore.Qt.AscendingOrder)
|
||||
def moodSort(self, group):
|
||||
chums = []
|
||||
listing = self.topLevelItem(group).child(0)
|
||||
while listing is not None:
|
||||
chums.append(self.topLevelItem(group).takeChild(0))
|
||||
listing = self.topLevelItem(group).child(0)
|
||||
chums.sort(key=lambda x: ((999 if x.chum.mood.value() == 2 else x.chum.mood.value()), x.chum.handle), reverse=False)
|
||||
for c in chums:
|
||||
self.topLevelItem(group).addChild(c)
|
||||
|
||||
@QtCore.pyqtSlot()
|
||||
def activateChum(self):
|
||||
self.itemActivated.emit(self.currentItem(), 0)
|
||||
|
@ -2160,6 +2184,12 @@ class PesterWindow(MovingWindow):
|
|||
elif chumsetting and not curchum:
|
||||
self.chumList.hideOfflineChums()
|
||||
self.config.set("hideOfflineChums", chumsetting)
|
||||
# sorting method
|
||||
sortsetting = self.optionmenu.sortBox.currentIndex()
|
||||
cursort = self.config.sortMethod()
|
||||
self.config.set("sortMethod", sortsetting)
|
||||
if sortsetting != cursort:
|
||||
self.chumList.sort()
|
||||
# sound
|
||||
soundsetting = self.optionmenu.soundcheck.isChecked()
|
||||
self.config.set("soundon", soundsetting)
|
||||
|
|
Loading…
Reference in a new issue