Added "Set notification sound..." context menu on addressbook entry.

This commit is contained in:
Dmitri Bogomolov 2017-09-04 16:06:48 +03:00
parent de531949e0
commit 1f47a4060e
Signed by untrusted user: g1itch
GPG Key ID: 720A756F18DEED13
2 changed files with 55 additions and 4 deletions

View File

@ -325,6 +325,10 @@ class MyForm(settingsmixin.SMainWindow):
_translate( _translate(
"MainWindow", "Set avatar..."), "MainWindow", "Set avatar..."),
self.on_action_AddressBookSetAvatar) self.on_action_AddressBookSetAvatar)
self.actionAddressBookSetSound = \
self.ui.addressBookContextMenuToolbar.addAction(
_translate("MainWindow", "Set notification sound..."),
self.on_action_AddressBookSetSound)
self.actionAddressBookNew = self.ui.addressBookContextMenuToolbar.addAction( self.actionAddressBookNew = self.ui.addressBookContextMenuToolbar.addAction(
_translate( _translate(
"MainWindow", "Add New Address"), self.on_action_AddressBookNew) "MainWindow", "Add New Address"), self.on_action_AddressBookNew)
@ -1205,9 +1209,9 @@ class MyForm(settingsmixin.SMainWindow):
soundFilename = None soundFilename = None
def _choose_ext(basename): def _choose_ext(basename):
for ext in ('.wav', '.mp3', '.oga'): for ext in sound.extensions:
if os.path.isfile(basename + ext): if os.path.isfile(os.extsep.join([basename, ext])):
return ext return os.extsep + ext
# if the address had a known label in the address book # if the address had a known label in the address book
if label: if label:
@ -3175,6 +3179,7 @@ class MyForm(settingsmixin.SMainWindow):
self.popMenuAddressBook.addAction(self.actionAddressBookClipboard) self.popMenuAddressBook.addAction(self.actionAddressBookClipboard)
self.popMenuAddressBook.addAction(self.actionAddressBookSubscribe) self.popMenuAddressBook.addAction(self.actionAddressBookSubscribe)
self.popMenuAddressBook.addAction(self.actionAddressBookSetAvatar) self.popMenuAddressBook.addAction(self.actionAddressBookSetAvatar)
self.popMenuAddressBook.addAction(self.actionAddressBookSetSound)
self.popMenuAddressBook.addSeparator() self.popMenuAddressBook.addSeparator()
self.popMenuAddressBook.addAction(self.actionAddressBookNew) self.popMenuAddressBook.addAction(self.actionAddressBookNew)
normal = True normal = True
@ -3578,7 +3583,51 @@ class MyForm(settingsmixin.SMainWindow):
return False return False
return True return True
def on_action_AddressBookSetSound(self):
widget = self.ui.tableWidgetAddressBook
self.setAddressSound(widget.item(widget.currentRow(), 0).text())
def setAddressSound(self, addr):
filters = [unicode(_translate(
"MainWindow", "Sound files (%s)" %
' '.join(['*%s%s' % (os.extsep, ext) for ext in sound.extensions])
))]
sourcefile = unicode(QtGui.QFileDialog.getOpenFileName(
self, _translate("MainWindow", "Set notification sound..."),
filter=';;'.join(filters)
))
if not sourcefile:
return
destdir = os.path.join(state.appdata, 'sounds')
destfile = unicode(addr) + os.path.splitext(sourcefile)[-1]
destination = os.path.join(destdir, destfile)
if sourcefile == destination:
return
pattern = destfile.lower()
for item in os.listdir(destdir):
if item.lower() == pattern:
overwrite = QtGui.QMessageBox.question(
self, _translate("MainWindow", "Message"),
_translate(
"MainWindow",
"You have already set a notification sound"
" for this address book entry."
" Do you really want to overwrite it?"),
QtGui.QMessageBox.Yes, QtGui.QMessageBox.No
) == QtGui.QMessageBox.Yes
if overwrite:
QtCore.QFile.remove(os.path.join(destdir, item))
break
if not QtCore.QFile.copy(sourcefile, destination):
logger.error(
'couldn\'t copy %s to %s', sourcefile, destination)
def on_context_menuYourIdentities(self, point): def on_context_menuYourIdentities(self, point):
currentItem = self.getCurrentItem() currentItem = self.getCurrentItem()
self.popMenuYourIdentities = QtGui.QMenu(self) self.popMenuYourIdentities = QtGui.QMenu(self)

View File

@ -17,3 +17,5 @@ def is_connection_sound(category):
SOUND_DISCONNECTED, SOUND_DISCONNECTED,
SOUND_CONNECTION_GREEN SOUND_CONNECTION_GREEN
) )
extensions = ('wav', 'mp3', 'oga')