|
|
|
@ -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,6 +53,9 @@ class App(QMainWindow): |
|
|
|
|
|
|
|
|
|
def initUI(self): |
|
|
|
|
self.setWindowTitle(self.title) |
|
|
|
|
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) |
|
|
|
|
|
|
|
|
@ -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,9 +139,13 @@ class App(QMainWindow): |
|
|
|
|
|
|
|
|
|
systraymenu.addAction(showAction) |
|
|
|
|
systraymenu.addAction(hideAction) |
|
|
|
|
systraymenu.addAction(self.silenceNotifsAction) |
|
|
|
|
systraymenu.addAction(exitAction) |
|
|
|
|
|
|
|
|
|
self.trayIcon = QSystemTrayIcon() |
|
|
|
|
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") |
|
|
|
@ -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,7 +488,13 @@ class App(QMainWindow): |
|
|
|
|
flip = False |
|
|
|
|
if flip: |
|
|
|
|
if self.trayIcon: |
|
|
|
|
self.trayIcon.setIcon(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,7 +518,13 @@ class App(QMainWindow): |
|
|
|
|
flip = False |
|
|
|
|
if flip: |
|
|
|
|
if self.trayIcon: |
|
|
|
|
self.trayIcon.setIcon(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): |
|
|
|
|