Add sound to notifications, and a silence option
Add an optional color icon Compute PFP height from screen height instead of fixing it at 50develop
parent
4560215d7a
commit
a510f5faf3
68
plchat.py
68
plchat.py
|
@ -37,6 +37,8 @@ APPDATA = appdirs.AppDirs('plchat', 'plchat').user_data_dir
|
|||
THREADS = {}
|
||||
STATIC_PREF = ''
|
||||
ICON_PATH = os.path.join(os.path.dirname(__file__), "fedi.svg")
|
||||
ICON_PATH_COLOR = os.path.join(os.path.dirname(__file__), "fedi_color.svg")
|
||||
NOTIF_SOUND = os.path.join(os.path.dirname(__file__), 'notif.wav')
|
||||
|
||||
class App(QMainWindow):
|
||||
settings = QSettings(APPDATA+"/settings.ini")
|
||||
|
@ -51,7 +53,10 @@ class App(QMainWindow):
|
|||
|
||||
def initUI(self):
|
||||
self.setWindowTitle(self.title)
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
if self.settings.value('colorIcon', type=bool):
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH_COLOR)))
|
||||
else:
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
self.setGeometry(self.settings.value('left', type=int) or 10, self.settings.value('top', type=int) or 10, self.settings.value('width', type=int) or 640, self.settings.value('height', type=int) or 480)
|
||||
|
||||
self._exit = False
|
||||
|
@ -103,9 +108,15 @@ class App(QMainWindow):
|
|||
self.darkModeAction.setChecked(self.settings.value('darkMode', type=bool))
|
||||
self.darkModeAction.setToolTip("Only affects chat bubbles")
|
||||
|
||||
self.colorIconAction = QAction("Use Color Icon", self, checkable=True, triggered=self.useColorIcon)
|
||||
self.colorIconAction.setChecked(self.settings.value('colorIcon', type=bool))
|
||||
|
||||
self.sendNotificationsAction = QAction("Send Notifications", self, checkable=True)
|
||||
self.sendNotificationsAction.setChecked(self.settings.value('sendNotifications', type=bool))
|
||||
|
||||
self.silenceNotifsAction = QAction("Silence Notifications", self, checkable=True, triggered=self.silenceNotifs)
|
||||
self.silenceNotifsAction.setChecked(self.settings.value('silenceNotifications', type=bool))
|
||||
|
||||
self.fetchHeadersAction = QAction("Fetch Headers", self, checkable=True)
|
||||
self.fetchHeadersAction.setChecked(self.settings.value('fetchHeaders', type=bool))
|
||||
|
||||
|
@ -128,10 +139,14 @@ class App(QMainWindow):
|
|||
|
||||
systraymenu.addAction(showAction)
|
||||
systraymenu.addAction(hideAction)
|
||||
systraymenu.addAction(self.silenceNotifsAction)
|
||||
systraymenu.addAction(exitAction)
|
||||
|
||||
self.trayIcon = QSystemTrayIcon()
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH))
|
||||
if self.settings.value('colorIcon', type=bool):
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH_COLOR))
|
||||
else:
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH))
|
||||
self.trayIcon.setVisible(True)
|
||||
self.trayIcon.setToolTip("PlChat")
|
||||
self.trayIcon.setContextMenu(systraymenu)
|
||||
|
@ -154,7 +169,9 @@ class App(QMainWindow):
|
|||
prefsmenu.addAction(self.openInTrayAction)
|
||||
prefsmenu.addAction(self.animatePicturesAction)
|
||||
prefsmenu.addAction(self.darkModeAction)
|
||||
prefsmenu.addAction(self.colorIconAction)
|
||||
prefsmenu.addAction(self.sendNotificationsAction)
|
||||
prefsmenu.addAction(self.silenceNotifsAction)
|
||||
prefsmenu.addAction(self.fetchBackgroundsAction)
|
||||
prefsmenu.addAction(self.fetchHeadersAction)
|
||||
prefsmenu.addAction(self.twoFourTimeAction)
|
||||
|
@ -217,6 +234,23 @@ class App(QMainWindow):
|
|||
else:
|
||||
self.show()
|
||||
|
||||
def silenceNotifs(self, dothing):
|
||||
if dothing:
|
||||
# Definitely not supposed to be poking around in the internals like this lul
|
||||
Notification._notification_audio = None
|
||||
else:
|
||||
Notification.audio = NOTIF_SOUND
|
||||
|
||||
def useColorIcon(self, dothing):
|
||||
if dothing:
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH_COLOR)))
|
||||
if self.trayIcon:
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH_COLOR))
|
||||
else:
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
if self.trayIcon:
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH))
|
||||
|
||||
def eventLoop(self):
|
||||
# Custom event loop to process queue events
|
||||
self.processEvents()
|
||||
|
@ -243,6 +277,8 @@ class App(QMainWindow):
|
|||
self.settings.setValue("sendNotifications", self.sendNotificationsAction.isChecked())
|
||||
self.settings.setValue("fetchHeaders", self.fetchHeadersAction.isChecked())
|
||||
self.settings.setValue("twoFourTime", self.twoFourTimeAction.isChecked())
|
||||
self.settings.setValue('colorIcon', self.colorIconAction.isChecked())
|
||||
self.settings.setValue('silenceNotifications', self.silenceNotifsAction.isChecked())
|
||||
event.accept()
|
||||
self._eventloop.stop()
|
||||
|
||||
|
@ -452,8 +488,14 @@ class App(QMainWindow):
|
|||
flip = False
|
||||
if flip:
|
||||
if self.trayIcon:
|
||||
self.trayIcon.setIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
if self.settings.value('colorIcon', type=bool):
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH_COLOR))
|
||||
else:
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH))
|
||||
if self.settings.value('colorIcon', type=bool):
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH_COLOR)))
|
||||
else:
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
self.tabs.widget(ind).markRead()
|
||||
self.tabs.widget(ind).setFocus(Qt.NoFocusReason)
|
||||
|
||||
|
@ -476,8 +518,14 @@ class App(QMainWindow):
|
|||
flip = False
|
||||
if flip:
|
||||
if self.trayIcon:
|
||||
self.trayIcon.setIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
if self.settings.value('colorIcon', type=bool):
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH_COLOR))
|
||||
else:
|
||||
self.trayIcon.setIcon(QIcon(ICON_PATH))
|
||||
if self.settings.value('colorIcon', type=bool):
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH_COLOR)))
|
||||
else:
|
||||
self.setWindowIcon(QIcon(QPixmap(ICON_PATH)))
|
||||
self.tabs.widget(ind).markRead()
|
||||
self.tabs.widget(ind).setFocus(Qt.NoFocusReason)
|
||||
|
||||
|
@ -761,13 +809,13 @@ class SingleMessage(QWidget):
|
|||
p = QPixmap(path)
|
||||
if p.isNull():
|
||||
p = QPixmap(APPDATA+'/'+ex.getCurrentAcc()[1]+'avi.png')
|
||||
p = p.scaledToHeight(50, mode=Qt.SmoothTransformation)
|
||||
p = p.scaledToHeight(round(QDesktopWidget().screenGeometry(-1).height() / 21.6), mode=Qt.SmoothTransformation)
|
||||
self.userPixmap = p
|
||||
def setConvoPixmap(self, path):
|
||||
p = QPixmap(path)
|
||||
if p.isNull():
|
||||
p = QPixmap(APPDATA+'/'+ex.getCurrentAcc()[1]+'avi.png')
|
||||
p = p.scaledToHeight(50, mode=Qt.SmoothTransformation)
|
||||
p = p.scaledToHeight(round(QDesktopWidget().screenGeometry(-1).height() / 21.6), mode=Qt.SmoothTransformation)
|
||||
self.convoPixmap = p
|
||||
|
||||
class MessageAvatar(QLabel):
|
||||
|
@ -1392,8 +1440,8 @@ class IconLabel(QLabel):
|
|||
|
||||
Notification = Notify(
|
||||
default_notification_title="PlChat",
|
||||
default_notification_icon=ICON_PATH
|
||||
#default_notification_audio=NOTIF_SOUND
|
||||
default_notification_icon=ICON_PATH,
|
||||
default_notification_audio=NOTIF_SOUND
|
||||
)
|
||||
|
||||
def sendNotification(message, title=None, icon=None):
|
||||
|
|
Loading…
Reference in New Issue