From 00fb25d9a7c29a9246989d2eb9e7eb6d7b451754 Mon Sep 17 00:00:00 2001 From: fourtf Date: Wed, 6 Jun 2018 16:29:35 +0200 Subject: [PATCH] removed the old user info popup --- chatterino.pro | 875 ++++++++++++++--------------- forms/accountpopupform.ui | 337 ----------- src/widgets/accountpopup.cpp | 409 -------------- src/widgets/accountpopup.hpp | 130 ----- src/widgets/helper/channelview.cpp | 7 +- src/widgets/helper/channelview.hpp | 2 - src/widgets/split.cpp | 18 +- src/widgets/split.hpp | 2 +- 8 files changed, 447 insertions(+), 1333 deletions(-) delete mode 100644 forms/accountpopupform.ui delete mode 100644 src/widgets/accountpopup.cpp delete mode 100644 src/widgets/accountpopup.hpp diff --git a/chatterino.pro b/chatterino.pro index 3892e8db2..abf1e697b 100644 --- a/chatterino.pro +++ b/chatterino.pro @@ -1,439 +1,436 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2016-12-28T18:23:35 -# -#------------------------------------------------- - -message(----) - -QT += widgets core gui network multimedia svg -CONFIG += communi -COMMUNI += core model util -CONFIG += c++14 -INCLUDEPATH += src/ -TARGET = chatterino -TEMPLATE = app -DEFINES += QT_DEPRECATED_WARNINGS -PRECOMPILED_HEADER = src/precompiled_header.hpp -CONFIG += precompile_header - -# https://bugreports.qt.io/browse/QTBUG-27018 -equals(QMAKE_CXX, "clang++")|equals(QMAKE_CXX, "g++") { - TARGET = bin/chatterino -} - -# Icons -macx:ICON = resources/images/chatterino2.icns -win32:RC_FILE = resources/windows.rc - - -macx { - LIBS += -L/usr/local/lib -} - -# Submodules -include(dependencies/rapidjson.pri) -include(dependencies/settings.pri) -include(dependencies/signals.pri) -include(dependencies/humanize.pri) -include(dependencies/fmt.pri) -DEFINES += IRC_NAMESPACE=Communi -include(dependencies/libcommuni.pri) -include(dependencies/websocketpp.pri) -include(dependencies/openssl.pri) -include(dependencies/boost.pri) - -# Optional feature: QtWebEngine -#exists ($(QTDIR)/include/QtWebEngine/QtWebEngine) { -# message(Using QWebEngine) -# QT += webenginewidgets -# DEFINES += "USEWEBENGINE" -#} - -linux { - LIBS += -lrt -} - -win32 { - LIBS += -luser32 -} - -# OSX include directory -macx { - INCLUDEPATH += /usr/local/include -} - -# Optional dependency on Windows SDK 7 -!contains(QMAKE_TARGET.arch, x86_64) { - win32:exists(C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\Windows.h) { - LIBS += -L"C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib" \ - -ldwmapi - - DEFINES += "USEWINSDK" - message(Using Windows SDK 7) - } -} - -# Optional dependency on Windows SDK 10 -contains(QMAKE_TARGET.arch, x86_64) { - WIN_SDK_VERSION = $$(WindowsSDKVersion) - !isEmpty(WIN_SDK_VERSION) { - !equals(WIN_SDK_VERSION, "\\") { - DEFINES += "USEWINSDK" - message(Using Windows SDK 10) - } - } -} - -werr { - QMAKE_CXXFLAGS += -Werror - - message("Enabling error on warning") -} - -# src -SOURCES += \ - src/main.cpp \ - src/application.cpp \ - src/channel.cpp \ - src/channeldata.cpp \ - src/messages/image.cpp \ - src/messages/layouts/messagelayout.cpp \ - src/messages/layouts/messagelayoutcontainer.cpp \ - src/messages/layouts/messagelayoutelement.cpp \ - src/messages/link.cpp \ - src/messages/message.cpp \ - src/messages/messagebuilder.cpp \ - src/messages/messagecolor.cpp \ - src/messages/messageelement.cpp \ - src/providers/irc/abstractircserver.cpp \ - src/providers/twitch/ircmessagehandler.cpp \ - src/providers/twitch/twitchaccount.cpp \ - src/providers/twitch/twitchaccountmanager.cpp \ - src/providers/twitch/twitchchannel.cpp \ - src/providers/twitch/twitchmessagebuilder.cpp \ - src/providers/twitch/twitchserver.cpp \ - src/providers/twitch/pubsub.cpp \ - src/providers/twitch/twitchemotes.cpp \ - src/providers/bttv/bttvemotes.cpp \ - src/providers/ffz/ffzemotes.cpp \ - src/providers/emoji/emojis.cpp \ - src/singletons/emotemanager.cpp \ - src/singletons/fontmanager.cpp \ - src/util/completionmodel.cpp \ - src/singletons/helper/loggingchannel.cpp \ - src/singletons/helper/moderationaction.cpp \ - src/singletons/helper/chatterinosetting.cpp \ - src/singletons/helper/giftimer.cpp \ - src/singletons/loggingmanager.cpp \ - src/singletons/pathmanager.cpp \ - src/singletons/resourcemanager.cpp \ - src/singletons/settingsmanager.cpp \ - src/singletons/thememanager.cpp \ - src/singletons/windowmanager.cpp \ - src/util/networkmanager.cpp \ - src/util/networkrequest.cpp \ - src/widgets/accountpopup.cpp \ - src/widgets/accountswitchpopupwidget.cpp \ - src/widgets/accountswitchwidget.cpp \ - src/widgets/basewidget.cpp \ - src/widgets/basewindow.cpp \ - src/widgets/emotepopup.cpp \ - src/widgets/helper/channelview.cpp \ - src/widgets/helper/droppreview.cpp \ - src/widgets/helper/label.cpp \ - src/widgets/helper/notebookbutton.cpp \ - src/widgets/helper/notebooktab.cpp \ - src/widgets/helper/resizingtextedit.cpp \ - src/widgets/helper/rippleeffectbutton.cpp \ - src/widgets/helper/rippleeffectlabel.cpp \ - src/widgets/helper/scrollbarhighlight.cpp \ - src/widgets/helper/searchpopup.cpp \ - src/widgets/helper/settingsdialogtab.cpp \ - src/widgets/helper/splitcolumn.cpp \ - src/widgets/helper/splitheader.cpp \ - src/widgets/helper/splitinput.cpp \ - src/widgets/helper/titlebarbutton.cpp \ - src/widgets/logindialog.cpp \ - src/widgets/notebook.cpp \ - src/widgets/qualitypopup.cpp \ - src/widgets/scrollbar.cpp \ - src/widgets/settingsdialog.cpp \ - src/widgets/settingspages/aboutpage.cpp \ - src/widgets/settingspages/accountspage.cpp \ - src/widgets/settingspages/appearancepage.cpp \ - src/widgets/settingspages/behaviourpage.cpp \ - src/widgets/settingspages/commandpage.cpp \ - src/widgets/settingspages/emotespage.cpp \ - src/widgets/settingspages/highlightingpage.cpp \ - src/widgets/settingspages/ignoreuserspage.cpp \ - src/widgets/settingspages/keyboardsettingspage.cpp \ - src/widgets/settingspages/logspage.cpp \ - src/widgets/settingspages/moderationpage.cpp \ - src/widgets/settingspages/settingspage.cpp \ - src/widgets/settingspages/specialchannelspage.cpp \ - src/widgets/split.cpp \ - src/widgets/splitcontainer.cpp \ - src/widgets/streamview.cpp \ - src/widgets/textinputdialog.cpp \ - src/widgets/tooltipwidget.cpp \ - src/widgets/window.cpp \ - src/providers/irc/ircaccount.cpp \ - src/providers/irc/ircserver.cpp \ - src/providers/irc/ircchannel2.cpp \ - src/util/streamlink.cpp \ - src/providers/twitch/twitchhelpers.cpp \ - src/widgets/helper/signallabel.cpp \ - src/widgets/helper/debugpopup.cpp \ - src/util/debugcount.cpp \ - src/singletons/nativemessagingmanager.cpp \ - src/util/rapidjson-helpers.cpp \ - src/providers/twitch/pubsubhelpers.cpp \ - src/providers/twitch/pubsubactions.cpp \ - src/providers/twitch/twitchuser.cpp \ - src/widgets/selectchanneldialog.cpp \ - src/singletons/updatemanager.cpp \ - src/widgets/lastruncrashdialog.cpp \ - src/widgets/attachedwindow.cpp \ - src/widgets/settingspages/externaltoolspage.cpp \ - src/widgets/helper/comboboxitemdelegate.cpp \ - src/controllers/commands/command.cpp \ - src/controllers/commands/commandmodel.cpp \ - src/controllers/commands/commandcontroller.cpp \ - src/controllers/highlights/highlightcontroller.cpp \ - src/controllers/highlights/highlightmodel.cpp \ - src/controllers/ignores/ignorecontroller.cpp \ - src/controllers/ignores/ignoremodel.cpp \ - src/widgets/helper/editablemodelview.cpp \ - src/controllers/accounts/accountcontroller.cpp \ - src/controllers/accounts/accountmodel.cpp \ - src/controllers/accounts/account.cpp \ - src/widgets/helper/splitoverlay.cpp \ - src/widgets/helper/dropoverlay.cpp \ - src/widgets/helper/splitnode.cpp \ - src/widgets/notificationpopup.cpp \ - src/controllers/taggedusers/taggeduserscontroller.cpp \ - src/controllers/taggedusers/taggeduser.cpp \ - src/controllers/taggedusers/taggedusersmodel.cpp \ - src/util/emotemap.cpp \ - src/providers/irc/ircconnection2.cpp \ - src/widgets/userinfopopup.cpp - -HEADERS += \ - src/precompiled_header.hpp \ - src/channel.hpp \ - src/const.hpp \ - src/debug/log.hpp \ - src/messages/image.hpp \ - src/messages/layouts/messagelayout.hpp \ - src/messages/layouts/messagelayoutcontainer.hpp \ - src/messages/layouts/messagelayoutelement.hpp \ - src/messages/limitedqueue.hpp \ - src/messages/limitedqueuesnapshot.hpp \ - src/messages/link.hpp \ - src/messages/message.hpp \ - src/messages/messagebuilder.hpp \ - src/messages/messagecolor.hpp \ - src/messages/messageelement.hpp \ - src/messages/messageparseargs.hpp \ - src/messages/selection.hpp \ - src/providers/twitch/emotevalue.hpp \ - src/providers/twitch/ircmessagehandler.hpp \ - src/providers/twitch/twitchaccount.hpp \ - src/providers/twitch/twitchaccountmanager.hpp \ - src/providers/twitch/twitchchannel.hpp \ - src/providers/twitch/twitchmessagebuilder.hpp \ - src/providers/twitch/twitchserver.hpp \ - src/providers/twitch/pubsub.hpp \ - src/providers/twitch/twitchemotes.hpp \ - src/providers/bttv/bttvemotes.hpp \ - src/providers/ffz/ffzemotes.hpp \ - src/providers/emoji/emojis.hpp \ - src/singletons/emotemanager.hpp \ - src/singletons/fontmanager.hpp \ - src/singletons/helper/chatterinosetting.hpp \ - src/singletons/helper/giftimer.hpp \ - src/util/completionmodel.hpp \ - src/singletons/helper/loggingchannel.hpp \ - src/singletons/helper/moderationaction.hpp \ - src/singletons/loggingmanager.hpp \ - src/singletons/pathmanager.hpp \ - src/singletons/resourcemanager.hpp \ - src/singletons/thememanager.hpp \ - src/singletons/windowmanager.hpp \ - src/util/benchmark.hpp \ - src/util/concurrentmap.hpp \ - src/util/distancebetweenpoints.hpp \ - src/util/emotemap.hpp \ - src/util/flagsenum.hpp \ - src/util/helpers.hpp \ - src/util/irchelpers.hpp \ - src/util/layoutcreator.hpp \ - src/util/nativeeventhelper.hpp \ - src/util/networkmanager.hpp \ - src/util/networkrequest.hpp \ - src/util/networkrequester.hpp \ - src/util/networkworker.hpp \ - src/util/posttothread.hpp \ - src/util/property.hpp \ - src/util/serialize-custom.hpp \ - src/util/urlfetch.hpp \ - src/widgets/accountpopup.hpp \ - src/widgets/accountswitchpopupwidget.hpp \ - src/widgets/accountswitchwidget.hpp \ - src/widgets/basewidget.hpp \ - src/widgets/basewindow.hpp \ - src/widgets/emotepopup.hpp \ - src/widgets/helper/channelview.hpp \ - src/widgets/helper/droppreview.hpp \ - src/widgets/helper/label.hpp \ - src/widgets/helper/notebookbutton.hpp \ - src/widgets/helper/notebooktab.hpp \ - src/widgets/helper/resizingtextedit.hpp \ - src/widgets/helper/rippleeffectbutton.hpp \ - src/widgets/helper/rippleeffectlabel.hpp \ - src/widgets/helper/scrollbarhighlight.hpp \ - src/widgets/helper/searchpopup.hpp \ - src/widgets/helper/settingsdialogtab.hpp \ - src/widgets/helper/shortcut.hpp \ - src/widgets/helper/signallabel.hpp \ - src/widgets/helper/splitcolumn.hpp \ - src/widgets/helper/splitheader.hpp \ - src/widgets/helper/splitinput.hpp \ - src/widgets/helper/titlebarbutton.hpp \ - src/widgets/notebook.hpp \ - src/widgets/qualitypopup.hpp \ - src/widgets/scrollbar.hpp \ - src/widgets/settingsdialog.hpp \ - src/widgets/settingspages/aboutpage.hpp \ - src/widgets/settingspages/accountspage.hpp \ - src/widgets/settingspages/appearancepage.hpp \ - src/widgets/settingspages/behaviourpage.hpp \ - src/widgets/settingspages/commandpage.hpp \ - src/widgets/settingspages/emotespage.hpp \ - src/widgets/settingspages/highlightingpage.hpp \ - src/widgets/settingspages/ignoreuserspage.hpp \ - src/widgets/settingspages/keyboardsettingspage.hpp \ - src/widgets/settingspages/logspage.hpp \ - src/widgets/settingspages/moderationpage.hpp \ - src/widgets/settingspages/settingspage.hpp \ - src/widgets/settingspages/specialchannelspage.hpp \ - src/widgets/split.hpp \ - src/widgets/splitcontainer.hpp \ - src/widgets/streamview.hpp \ - src/widgets/textinputdialog.hpp \ - src/widgets/tooltipwidget.hpp \ - src/widgets/window.hpp \ - src/common.hpp \ - src/providers/irc/abstractircserver.hpp \ - src/providers/irc/ircaccount.hpp \ - src/providers/irc/ircserver.hpp \ - src/providers/irc/ircchannel2.hpp \ - src/util/streamlink.hpp \ - src/providers/twitch/twitchhelpers.hpp \ - src/util/debugcount.hpp \ - src/widgets/helper/debugpopup.hpp \ - src/version.hpp \ - src/singletons/settingsmanager.hpp \ - src/singletons/nativemessagingmanager.hpp \ - src/util/rapidjson-helpers.hpp \ - src/providers/twitch/pubsubhelpers.hpp \ - src/providers/twitch/pubsubactions.hpp \ - src/providers/twitch/twitchuser.hpp \ - src/widgets/selectchanneldialog.hpp \ - src/singletons/updatemanager.hpp \ - src/widgets/lastruncrashdialog.hpp \ - src/widgets/attachedwindow.hpp \ - src/widgets/settingspages/externaltoolspage.hpp \ - src/util/removescrollareabackground.hpp \ - src/util/standarditemhelper.hpp \ - src/widgets/helper/comboboxitemdelegate.hpp \ - src/util/assertinguithread.hpp \ - src/util/signalvector2.hpp \ - src/util/signalvectormodel.hpp \ - src/controllers/commands/command.hpp \ - src/controllers/commands/commandmodel.hpp \ - src/controllers/commands/commandcontroller.hpp \ - src/controllers/highlights/highlightcontroller.hpp \ - src/controllers/highlights/highlightphrase.hpp \ - src/controllers/highlights/highlightmodel.hpp \ - src/controllers/ignores/ignorecontroller.hpp \ - src/controllers/ignores/ignorephrase.hpp \ - src/controllers/ignores/ignoremodel.hpp \ - src/widgets/helper/editablemodelview.hpp \ - src/controllers/accounts/accountcontroller.hpp \ - src/controllers/accounts/accountmodel.hpp \ - src/controllers/accounts/account.hpp \ - src/util/sharedptrelementless.hpp \ - src/widgets/helper/splitoverlay.hpp \ - src/widgets/helper/dropoverlay.hpp \ - src/widgets/helper/splitnode.hpp \ - src/widgets/notificationpopup.hpp \ - src/controllers/taggedusers/taggeduserscontroller.hpp \ - src/controllers/taggedusers/taggeduser.hpp \ - src/providerid.hpp \ - src/controllers/taggedusers/taggedusersmodel.hpp \ - src/util/qstringhash.hpp \ - src/util/mutexvalue.hpp \ - src/providers/irc/ircconnection2.hpp \ - src/widgets/helper/line.hpp \ - src/widgets/userinfopopup.hpp - -RESOURCES += \ - resources/resources.qrc - -DISTFILES += - -FORMS += \ - forms/accountpopupform.ui - -# Define warning flags for Chatterino -win32-msvc* { - QMAKE_CXXFLAGS_WARN_ON = /W4 - # 4714 - function marked as __forceinline not inlined - # 4996 - occurs when the compiler encounters a function or variable that is marked as deprecated. - # These functions may have a different preferred name, may be insecure or have - # a more secure variant, or may be obsolete. - # 4505 - unreferenced local version has been removed - # 4127 - conditional expression is constant - # 4503 - decorated name length exceeded, name was truncated - # 4100 - unreferences formal parameter - # 4305 - possible truncation of data - # 4267 - possible loss of data in return - QMAKE_CXXFLAGS_WARN_ON += /wd4714 - QMAKE_CXXFLAGS_WARN_ON += /wd4996 - QMAKE_CXXFLAGS_WARN_ON += /wd4505 - QMAKE_CXXFLAGS_WARN_ON += /wd4127 - QMAKE_CXXFLAGS_WARN_ON += /wd4503 - QMAKE_CXXFLAGS_WARN_ON += /wd4100 - QMAKE_CXXFLAGS_WARN_ON += /wd4305 - QMAKE_CXXFLAGS_WARN_ON += /wd4267 - -} else { - QMAKE_CXXFLAGS_WARN_ON = -Wall - QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-function - QMAKE_CXXFLAGS_WARN_ON += -Wno-switch - QMAKE_CXXFLAGS_WARN_ON += -Wno-deprecated-declarations - QMAKE_CXXFLAGS_WARN_ON += -Wno-sign-compare - QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-variable - - # Disabling strict-aliasing warnings for now, although we probably want to re-enable this in the future - QMAKE_CXXFLAGS_WARN_ON += -Wno-strict-aliasing - - equals(QMAKE_CXX, "clang++") { - QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-local-typedef - } else { - QMAKE_CXXFLAGS_WARN_ON += -Wno-class-memaccess - } -} - -# do not use windows min/max macros -#win32 { -# DEFINES += NOMINMAX -#} - -#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - -linux { - QMAKE_LFLAGS += -lrt -} +#------------------------------------------------- +# +# Project created by QtCreator 2016-12-28T18:23:35 +# +#------------------------------------------------- + +message(----) + +QT += widgets core gui network multimedia svg +CONFIG += communi +COMMUNI += core model util +CONFIG += c++14 +INCLUDEPATH += src/ +TARGET = chatterino +TEMPLATE = app +DEFINES += QT_DEPRECATED_WARNINGS +PRECOMPILED_HEADER = src/precompiled_header.hpp +CONFIG += precompile_header + +# https://bugreports.qt.io/browse/QTBUG-27018 +equals(QMAKE_CXX, "clang++")|equals(QMAKE_CXX, "g++") { + TARGET = bin/chatterino +} + +# Icons +macx:ICON = resources/images/chatterino2.icns +win32:RC_FILE = resources/windows.rc + + +macx { + LIBS += -L/usr/local/lib +} + +# Submodules +include(dependencies/rapidjson.pri) +include(dependencies/settings.pri) +include(dependencies/signals.pri) +include(dependencies/humanize.pri) +include(dependencies/fmt.pri) +DEFINES += IRC_NAMESPACE=Communi +include(dependencies/libcommuni.pri) +include(dependencies/websocketpp.pri) +include(dependencies/openssl.pri) +include(dependencies/boost.pri) + +# Optional feature: QtWebEngine +#exists ($(QTDIR)/include/QtWebEngine/QtWebEngine) { +# message(Using QWebEngine) +# QT += webenginewidgets +# DEFINES += "USEWEBENGINE" +#} + +linux { + LIBS += -lrt +} + +win32 { + LIBS += -luser32 +} + +# OSX include directory +macx { + INCLUDEPATH += /usr/local/include +} + +# Optional dependency on Windows SDK 7 +!contains(QMAKE_TARGET.arch, x86_64) { + win32:exists(C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\Windows.h) { + LIBS += -L"C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib" \ + -ldwmapi + + DEFINES += "USEWINSDK" + message(Using Windows SDK 7) + } +} + +# Optional dependency on Windows SDK 10 +contains(QMAKE_TARGET.arch, x86_64) { + WIN_SDK_VERSION = $$(WindowsSDKVersion) + !isEmpty(WIN_SDK_VERSION) { + !equals(WIN_SDK_VERSION, "\\") { + DEFINES += "USEWINSDK" + message(Using Windows SDK 10) + } + } +} + +werr { + QMAKE_CXXFLAGS += -Werror + + message("Enabling error on warning") +} + +# src +SOURCES += \ + src/main.cpp \ + src/application.cpp \ + src/channel.cpp \ + src/channeldata.cpp \ + src/messages/image.cpp \ + src/messages/layouts/messagelayout.cpp \ + src/messages/layouts/messagelayoutcontainer.cpp \ + src/messages/layouts/messagelayoutelement.cpp \ + src/messages/link.cpp \ + src/messages/message.cpp \ + src/messages/messagebuilder.cpp \ + src/messages/messagecolor.cpp \ + src/messages/messageelement.cpp \ + src/providers/irc/abstractircserver.cpp \ + src/providers/twitch/ircmessagehandler.cpp \ + src/providers/twitch/twitchaccount.cpp \ + src/providers/twitch/twitchaccountmanager.cpp \ + src/providers/twitch/twitchchannel.cpp \ + src/providers/twitch/twitchmessagebuilder.cpp \ + src/providers/twitch/twitchserver.cpp \ + src/providers/twitch/pubsub.cpp \ + src/providers/twitch/twitchemotes.cpp \ + src/providers/bttv/bttvemotes.cpp \ + src/providers/ffz/ffzemotes.cpp \ + src/providers/emoji/emojis.cpp \ + src/singletons/emotemanager.cpp \ + src/singletons/fontmanager.cpp \ + src/util/completionmodel.cpp \ + src/singletons/helper/loggingchannel.cpp \ + src/singletons/helper/moderationaction.cpp \ + src/singletons/helper/chatterinosetting.cpp \ + src/singletons/helper/giftimer.cpp \ + src/singletons/loggingmanager.cpp \ + src/singletons/pathmanager.cpp \ + src/singletons/resourcemanager.cpp \ + src/singletons/settingsmanager.cpp \ + src/singletons/thememanager.cpp \ + src/singletons/windowmanager.cpp \ + src/util/networkmanager.cpp \ + src/util/networkrequest.cpp \ + src/widgets/accountswitchpopupwidget.cpp \ + src/widgets/accountswitchwidget.cpp \ + src/widgets/basewidget.cpp \ + src/widgets/basewindow.cpp \ + src/widgets/emotepopup.cpp \ + src/widgets/helper/channelview.cpp \ + src/widgets/helper/droppreview.cpp \ + src/widgets/helper/label.cpp \ + src/widgets/helper/notebookbutton.cpp \ + src/widgets/helper/notebooktab.cpp \ + src/widgets/helper/resizingtextedit.cpp \ + src/widgets/helper/rippleeffectbutton.cpp \ + src/widgets/helper/rippleeffectlabel.cpp \ + src/widgets/helper/scrollbarhighlight.cpp \ + src/widgets/helper/searchpopup.cpp \ + src/widgets/helper/settingsdialogtab.cpp \ + src/widgets/helper/splitcolumn.cpp \ + src/widgets/helper/splitheader.cpp \ + src/widgets/helper/splitinput.cpp \ + src/widgets/helper/titlebarbutton.cpp \ + src/widgets/logindialog.cpp \ + src/widgets/notebook.cpp \ + src/widgets/qualitypopup.cpp \ + src/widgets/scrollbar.cpp \ + src/widgets/settingsdialog.cpp \ + src/widgets/settingspages/aboutpage.cpp \ + src/widgets/settingspages/accountspage.cpp \ + src/widgets/settingspages/appearancepage.cpp \ + src/widgets/settingspages/behaviourpage.cpp \ + src/widgets/settingspages/commandpage.cpp \ + src/widgets/settingspages/emotespage.cpp \ + src/widgets/settingspages/highlightingpage.cpp \ + src/widgets/settingspages/ignoreuserspage.cpp \ + src/widgets/settingspages/keyboardsettingspage.cpp \ + src/widgets/settingspages/logspage.cpp \ + src/widgets/settingspages/moderationpage.cpp \ + src/widgets/settingspages/settingspage.cpp \ + src/widgets/settingspages/specialchannelspage.cpp \ + src/widgets/split.cpp \ + src/widgets/splitcontainer.cpp \ + src/widgets/streamview.cpp \ + src/widgets/textinputdialog.cpp \ + src/widgets/tooltipwidget.cpp \ + src/widgets/window.cpp \ + src/providers/irc/ircaccount.cpp \ + src/providers/irc/ircserver.cpp \ + src/providers/irc/ircchannel2.cpp \ + src/util/streamlink.cpp \ + src/providers/twitch/twitchhelpers.cpp \ + src/widgets/helper/signallabel.cpp \ + src/widgets/helper/debugpopup.cpp \ + src/util/debugcount.cpp \ + src/singletons/nativemessagingmanager.cpp \ + src/util/rapidjson-helpers.cpp \ + src/providers/twitch/pubsubhelpers.cpp \ + src/providers/twitch/pubsubactions.cpp \ + src/providers/twitch/twitchuser.cpp \ + src/widgets/selectchanneldialog.cpp \ + src/singletons/updatemanager.cpp \ + src/widgets/lastruncrashdialog.cpp \ + src/widgets/attachedwindow.cpp \ + src/widgets/settingspages/externaltoolspage.cpp \ + src/widgets/helper/comboboxitemdelegate.cpp \ + src/controllers/commands/command.cpp \ + src/controllers/commands/commandmodel.cpp \ + src/controllers/commands/commandcontroller.cpp \ + src/controllers/highlights/highlightcontroller.cpp \ + src/controllers/highlights/highlightmodel.cpp \ + src/controllers/ignores/ignorecontroller.cpp \ + src/controllers/ignores/ignoremodel.cpp \ + src/widgets/helper/editablemodelview.cpp \ + src/controllers/accounts/accountcontroller.cpp \ + src/controllers/accounts/accountmodel.cpp \ + src/controllers/accounts/account.cpp \ + src/widgets/helper/splitoverlay.cpp \ + src/widgets/helper/dropoverlay.cpp \ + src/widgets/helper/splitnode.cpp \ + src/widgets/notificationpopup.cpp \ + src/controllers/taggedusers/taggeduserscontroller.cpp \ + src/controllers/taggedusers/taggeduser.cpp \ + src/controllers/taggedusers/taggedusersmodel.cpp \ + src/util/emotemap.cpp \ + src/providers/irc/ircconnection2.cpp \ + src/widgets/userinfopopup.cpp + +HEADERS += \ + src/precompiled_header.hpp \ + src/channel.hpp \ + src/const.hpp \ + src/debug/log.hpp \ + src/messages/image.hpp \ + src/messages/layouts/messagelayout.hpp \ + src/messages/layouts/messagelayoutcontainer.hpp \ + src/messages/layouts/messagelayoutelement.hpp \ + src/messages/limitedqueue.hpp \ + src/messages/limitedqueuesnapshot.hpp \ + src/messages/link.hpp \ + src/messages/message.hpp \ + src/messages/messagebuilder.hpp \ + src/messages/messagecolor.hpp \ + src/messages/messageelement.hpp \ + src/messages/messageparseargs.hpp \ + src/messages/selection.hpp \ + src/providers/twitch/emotevalue.hpp \ + src/providers/twitch/ircmessagehandler.hpp \ + src/providers/twitch/twitchaccount.hpp \ + src/providers/twitch/twitchaccountmanager.hpp \ + src/providers/twitch/twitchchannel.hpp \ + src/providers/twitch/twitchmessagebuilder.hpp \ + src/providers/twitch/twitchserver.hpp \ + src/providers/twitch/pubsub.hpp \ + src/providers/twitch/twitchemotes.hpp \ + src/providers/bttv/bttvemotes.hpp \ + src/providers/ffz/ffzemotes.hpp \ + src/providers/emoji/emojis.hpp \ + src/singletons/emotemanager.hpp \ + src/singletons/fontmanager.hpp \ + src/singletons/helper/chatterinosetting.hpp \ + src/singletons/helper/giftimer.hpp \ + src/util/completionmodel.hpp \ + src/singletons/helper/loggingchannel.hpp \ + src/singletons/helper/moderationaction.hpp \ + src/singletons/loggingmanager.hpp \ + src/singletons/pathmanager.hpp \ + src/singletons/resourcemanager.hpp \ + src/singletons/thememanager.hpp \ + src/singletons/windowmanager.hpp \ + src/util/benchmark.hpp \ + src/util/concurrentmap.hpp \ + src/util/distancebetweenpoints.hpp \ + src/util/emotemap.hpp \ + src/util/flagsenum.hpp \ + src/util/helpers.hpp \ + src/util/irchelpers.hpp \ + src/util/layoutcreator.hpp \ + src/util/nativeeventhelper.hpp \ + src/util/networkmanager.hpp \ + src/util/networkrequest.hpp \ + src/util/networkrequester.hpp \ + src/util/networkworker.hpp \ + src/util/posttothread.hpp \ + src/util/property.hpp \ + src/util/serialize-custom.hpp \ + src/util/urlfetch.hpp \ + src/widgets/accountswitchpopupwidget.hpp \ + src/widgets/accountswitchwidget.hpp \ + src/widgets/basewidget.hpp \ + src/widgets/basewindow.hpp \ + src/widgets/emotepopup.hpp \ + src/widgets/helper/channelview.hpp \ + src/widgets/helper/droppreview.hpp \ + src/widgets/helper/label.hpp \ + src/widgets/helper/notebookbutton.hpp \ + src/widgets/helper/notebooktab.hpp \ + src/widgets/helper/resizingtextedit.hpp \ + src/widgets/helper/rippleeffectbutton.hpp \ + src/widgets/helper/rippleeffectlabel.hpp \ + src/widgets/helper/scrollbarhighlight.hpp \ + src/widgets/helper/searchpopup.hpp \ + src/widgets/helper/settingsdialogtab.hpp \ + src/widgets/helper/shortcut.hpp \ + src/widgets/helper/signallabel.hpp \ + src/widgets/helper/splitcolumn.hpp \ + src/widgets/helper/splitheader.hpp \ + src/widgets/helper/splitinput.hpp \ + src/widgets/helper/titlebarbutton.hpp \ + src/widgets/notebook.hpp \ + src/widgets/qualitypopup.hpp \ + src/widgets/scrollbar.hpp \ + src/widgets/settingsdialog.hpp \ + src/widgets/settingspages/aboutpage.hpp \ + src/widgets/settingspages/accountspage.hpp \ + src/widgets/settingspages/appearancepage.hpp \ + src/widgets/settingspages/behaviourpage.hpp \ + src/widgets/settingspages/commandpage.hpp \ + src/widgets/settingspages/emotespage.hpp \ + src/widgets/settingspages/highlightingpage.hpp \ + src/widgets/settingspages/ignoreuserspage.hpp \ + src/widgets/settingspages/keyboardsettingspage.hpp \ + src/widgets/settingspages/logspage.hpp \ + src/widgets/settingspages/moderationpage.hpp \ + src/widgets/settingspages/settingspage.hpp \ + src/widgets/settingspages/specialchannelspage.hpp \ + src/widgets/split.hpp \ + src/widgets/splitcontainer.hpp \ + src/widgets/streamview.hpp \ + src/widgets/textinputdialog.hpp \ + src/widgets/tooltipwidget.hpp \ + src/widgets/window.hpp \ + src/common.hpp \ + src/providers/irc/abstractircserver.hpp \ + src/providers/irc/ircaccount.hpp \ + src/providers/irc/ircserver.hpp \ + src/providers/irc/ircchannel2.hpp \ + src/util/streamlink.hpp \ + src/providers/twitch/twitchhelpers.hpp \ + src/util/debugcount.hpp \ + src/widgets/helper/debugpopup.hpp \ + src/version.hpp \ + src/singletons/settingsmanager.hpp \ + src/singletons/nativemessagingmanager.hpp \ + src/util/rapidjson-helpers.hpp \ + src/providers/twitch/pubsubhelpers.hpp \ + src/providers/twitch/pubsubactions.hpp \ + src/providers/twitch/twitchuser.hpp \ + src/widgets/selectchanneldialog.hpp \ + src/singletons/updatemanager.hpp \ + src/widgets/lastruncrashdialog.hpp \ + src/widgets/attachedwindow.hpp \ + src/widgets/settingspages/externaltoolspage.hpp \ + src/util/removescrollareabackground.hpp \ + src/util/standarditemhelper.hpp \ + src/widgets/helper/comboboxitemdelegate.hpp \ + src/util/assertinguithread.hpp \ + src/util/signalvector2.hpp \ + src/util/signalvectormodel.hpp \ + src/controllers/commands/command.hpp \ + src/controllers/commands/commandmodel.hpp \ + src/controllers/commands/commandcontroller.hpp \ + src/controllers/highlights/highlightcontroller.hpp \ + src/controllers/highlights/highlightphrase.hpp \ + src/controllers/highlights/highlightmodel.hpp \ + src/controllers/ignores/ignorecontroller.hpp \ + src/controllers/ignores/ignorephrase.hpp \ + src/controllers/ignores/ignoremodel.hpp \ + src/widgets/helper/editablemodelview.hpp \ + src/controllers/accounts/accountcontroller.hpp \ + src/controllers/accounts/accountmodel.hpp \ + src/controllers/accounts/account.hpp \ + src/util/sharedptrelementless.hpp \ + src/widgets/helper/splitoverlay.hpp \ + src/widgets/helper/dropoverlay.hpp \ + src/widgets/helper/splitnode.hpp \ + src/widgets/notificationpopup.hpp \ + src/controllers/taggedusers/taggeduserscontroller.hpp \ + src/controllers/taggedusers/taggeduser.hpp \ + src/providerid.hpp \ + src/controllers/taggedusers/taggedusersmodel.hpp \ + src/util/qstringhash.hpp \ + src/util/mutexvalue.hpp \ + src/providers/irc/ircconnection2.hpp \ + src/widgets/helper/line.hpp \ + src/widgets/userinfopopup.hpp + +RESOURCES += \ + resources/resources.qrc + +DISTFILES += + +FORMS += + +# Define warning flags for Chatterino +win32-msvc* { + QMAKE_CXXFLAGS_WARN_ON = /W4 + # 4714 - function marked as __forceinline not inlined + # 4996 - occurs when the compiler encounters a function or variable that is marked as deprecated. + # These functions may have a different preferred name, may be insecure or have + # a more secure variant, or may be obsolete. + # 4505 - unreferenced local version has been removed + # 4127 - conditional expression is constant + # 4503 - decorated name length exceeded, name was truncated + # 4100 - unreferences formal parameter + # 4305 - possible truncation of data + # 4267 - possible loss of data in return + QMAKE_CXXFLAGS_WARN_ON += /wd4714 + QMAKE_CXXFLAGS_WARN_ON += /wd4996 + QMAKE_CXXFLAGS_WARN_ON += /wd4505 + QMAKE_CXXFLAGS_WARN_ON += /wd4127 + QMAKE_CXXFLAGS_WARN_ON += /wd4503 + QMAKE_CXXFLAGS_WARN_ON += /wd4100 + QMAKE_CXXFLAGS_WARN_ON += /wd4305 + QMAKE_CXXFLAGS_WARN_ON += /wd4267 + +} else { + QMAKE_CXXFLAGS_WARN_ON = -Wall + QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-function + QMAKE_CXXFLAGS_WARN_ON += -Wno-switch + QMAKE_CXXFLAGS_WARN_ON += -Wno-deprecated-declarations + QMAKE_CXXFLAGS_WARN_ON += -Wno-sign-compare + QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-variable + + # Disabling strict-aliasing warnings for now, although we probably want to re-enable this in the future + QMAKE_CXXFLAGS_WARN_ON += -Wno-strict-aliasing + + equals(QMAKE_CXX, "clang++") { + QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-local-typedef + } else { + QMAKE_CXXFLAGS_WARN_ON += -Wno-class-memaccess + } +} + +# do not use windows min/max macros +#win32 { +# DEFINES += NOMINMAX +#} + +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +linux { + QMAKE_LFLAGS += -lrt +} diff --git a/forms/accountpopupform.ui b/forms/accountpopupform.ui deleted file mode 100644 index d0467ad9f..000000000 --- a/forms/accountpopupform.ui +++ /dev/null @@ -1,337 +0,0 @@ - - - AccountPopup - - - - 0 - 0 - 469 - 301 - - - - - 0 - 0 - - - - AccountPopup - - - - - - - - - - 100 - 100 - - - - - 100 - 100 - - - - Loading... - - - true - - - - - - - - - - 0 - 0 - - - - - 14 - 75 - true - - - - Loading... - - - - - - - - 0 - 0 - - - - Close - - - - - - - - - - - Views: - - - - - - - Loading... - - - - - - - Followers: - - - - - - - Loading... - - - - - - - Created at: - - - - - - - Loading... - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 25 - 16777215 - - - - Copy Username - - - qproperty-icon: url(:/images/CopyLongTextToClipboard_16x.png) - - - - - - - - - - Profile - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - false - - - Follow - - - - - - - true - - - Ignore - - - - - - - Disable Highlights - - - - - - - Enable Highlights - - - - - - - Message - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Ban - - - - - - - Purge - - - - - - - Unban - - - - - - - 10 Mins - - - - - - - 24 Hours - - - - - - - 1 Min - - - - - - - 1 Hour - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Mod - - - - - - - Unmod - - - - - - - - - - - diff --git a/src/widgets/accountpopup.cpp b/src/widgets/accountpopup.cpp deleted file mode 100644 index 93e05e123..000000000 --- a/src/widgets/accountpopup.cpp +++ /dev/null @@ -1,409 +0,0 @@ -#include "widgets/accountpopup.hpp" - -#include "application.hpp" -#include "channel.hpp" -#include "credentials.hpp" -#include "singletons/settingsmanager.hpp" -#include "ui_accountpopupform.h" -#include "util/urlfetch.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace chatterino { -namespace widgets { - -AccountPopupWidget::AccountPopupWidget(ChannelPtr _channel) - : BaseWindow() - , ui(new Ui::AccountPopup) - , channel(_channel) -{ - auto app = getApp(); - - this->ui->setupUi(this); - - this->setStayInScreenRect(true); - - this->layout()->setSizeConstraint(QLayout::SetFixedSize); - - this->setWindowFlags(Qt::FramelessWindowHint); - - this->resize(0, 0); - - connect(this, &AccountPopupWidget::refreshButtons, this, - &AccountPopupWidget::actuallyRefreshButtons, Qt::QueuedConnection); - - app->accounts->twitch.currentUserChanged.connect([this] { - auto currentTwitchUser = getApp()->accounts->twitch.getCurrent(); - if (!currentTwitchUser) { - // No twitch user set (should never happen) - return; - } - - this->loggedInUser.username = currentTwitchUser->getUserName(); - this->loggedInUser.userID = currentTwitchUser->getUserId(); - - this->loggedInUser.refreshUserType(this->channel, true); - }); - - for (auto button : this->ui->profileLayout->findChildren()) { - button->setFocusProxy(this); - } - for (auto button : this->ui->userLayout->findChildren()) { - button->setFocusProxy(this); - } - for (auto button : this->ui->modLayout->findChildren()) { - button->setFocusProxy(this); - } - for (auto button : this->ui->ownerLayout->findChildren()) { - button->setFocusProxy(this); - } - - this->timeout(this->ui->purge, 1); - this->timeout(this->ui->min1, 60); - this->timeout(this->ui->min10, 600); - this->timeout(this->ui->hour1, 3600); - this->timeout(this->ui->hour24, 86400); - - this->sendCommand(this->ui->ban, "/ban "); - this->sendCommand(this->ui->unBan, "/unban "); - this->sendCommand(this->ui->mod, "/mod "); - this->sendCommand(this->ui->unMod, "/unmod "); - - QObject::connect(this->ui->profile, &QPushButton::clicked, this, [=]() { - QDesktopServices::openUrl(QUrl("https://twitch.tv/" + this->popupWidgetUser.username)); - }); - - QObject::connect(this->ui->sendMessage, &QPushButton::clicked, this, [=]() { - QDesktopServices::openUrl( - QUrl("https://www.twitch.tv/message/compose?to=" + this->ui->lblUsername->text())); - }); - - QObject::connect(this->ui->copy, &QPushButton::clicked, this, - [=]() { QApplication::clipboard()->setText(this->ui->lblUsername->text()); }); - - QObject::connect(this->ui->follow, &QPushButton::clicked, this, [=]() { - debug::Log("Attempt to toggle follow user {}({}) as user {}({})", - this->popupWidgetUser.username, this->popupWidgetUser.userID, - this->loggedInUser.username, this->loggedInUser.userID); - - QUrl requestUrl("https://api.twitch.tv/kraken/users/" + this->loggedInUser.userID + - "/follows/channels/" + this->popupWidgetUser.userID); - - this->ui->follow->setEnabled(false); - if (!this->relationship.isFollowing()) { - util::twitch::put(requestUrl, [this](QJsonObject obj) { - qDebug() << "follows channel: " << obj; - this->relationship.setFollowing(true); - emit refreshButtons(); - }); - } else { - util::twitch::sendDelete(requestUrl, [this] { - this->relationship.setFollowing(false); - emit refreshButtons(); - }); - } - }); - - QObject::connect(this->ui->ignore, &QPushButton::clicked, this, [=]() { - auto currentUser = getApp()->accounts->twitch.getCurrent(); - - if (!this->relationship.isIgnoring()) { - currentUser->ignoreByID(this->popupWidgetUser.userID, this->popupWidgetUser.username, - [=](auto result, const auto &message) { - switch (result) { - case IgnoreResult_Success: { - this->relationship.setIgnoring(true); - emit this->refreshButtons(); - } break; - case IgnoreResult_AlreadyIgnored: { - this->relationship.setIgnoring(true); - emit this->refreshButtons(); - } break; - case IgnoreResult_Failed: { - } break; - } - }); - } else { - currentUser->unignoreByID(this->popupWidgetUser.userID, this->popupWidgetUser.username, - [=](auto result, const auto &message) { - switch (result) { - case UnignoreResult_Success: { - this->relationship.setIgnoring(false); - emit this->refreshButtons(); - } break; - case UnignoreResult_Failed: { - } break; - } - }); - } - }); - - QObject::connect(this->ui->disableHighlights, &QPushButton::clicked, this, [=]() { - QString str = app->settings->highlightUserBlacklist; - str.append(this->ui->lblUsername->text() + "\n"); - app->settings->highlightUserBlacklist = str; - this->ui->disableHighlights->hide(); - this->ui->enableHighlights->show(); - }); - - QObject::connect(this->ui->enableHighlights, &QPushButton::clicked, this, [=]() { - QString str = app->settings->highlightUserBlacklist; - QStringList list = str.split("\n"); - list.removeAll(this->ui->lblUsername->text()); - app->settings->highlightUserBlacklist = list.join("\n"); - this->ui->enableHighlights->hide(); - this->ui->disableHighlights->show(); - }); - - this->updateButtons(this->ui->userLayout, false); - this->updateButtons(this->ui->modLayout, false); - this->updateButtons(this->ui->ownerLayout, false); - - // Close button - QObject::connect(this->ui->btnClose, &QPushButton::clicked, [this] { - this->hide(); // - }); - - this->scaleChangedEvent(this->getScale()); -} - -void AccountPopupWidget::setName(const QString &name) -{ - this->relationship.reset(); - - this->popupWidgetUser.username = name; - this->ui->lblUsername->setText(name); - this->getUserId(); - - // Refresh popup widget users type - - this->popupWidgetUser.refreshUserType(this->channel, false); -} - -void AccountPopupWidget::User::refreshUserType(const ChannelPtr &channel, bool loggedInUser) -{ - if (channel->name == this->username) { - this->userType = UserType::Owner; - } else if ((loggedInUser && channel->isMod()) || channel->modList.contains(this->username)) { - this->userType = UserType::Mod; - } else { - this->userType = UserType::User; - } -} - -void AccountPopupWidget::setChannel(ChannelPtr _channel) -{ - this->channel = _channel; -} - -void AccountPopupWidget::getUserId() -{ - util::twitch::getUserID(this->popupWidgetUser.username, this, [=](const QString &id) { - this->popupWidgetUser.userID = id; - this->getUserData(); - }); -} - -void AccountPopupWidget::getUserData() -{ - util::twitch::get( - "https://api.twitch.tv/kraken/channels/" + this->popupWidgetUser.userID, this, - [=](const QJsonObject &obj) { - this->ui->lblFollowers->setText(QString::number(obj.value("followers").toInt())); - this->ui->lblViews->setText(QString::number(obj.value("views").toInt())); - this->ui->lblAccountAge->setText(obj.value("created_at").toString().section("T", 0, 0)); - - this->loadAvatar(QUrl(obj.value("logo").toString())); - }); - - auto app = getApp(); - auto currentUser = app->accounts->twitch.getCurrent(); - - currentUser->checkFollow(this->popupWidgetUser.userID, [=](auto result) { - this->relationship.setFollowing(result == FollowResult_Following); - - emit this->refreshButtons(); - }); - - bool isIgnoring = false; - for (const auto &ignoredUser : currentUser->getIgnores()) { - if (this->popupWidgetUser.userID == ignoredUser.id) { - isIgnoring = true; - break; - } - } - this->relationship.setIgnoring(isIgnoring); - emit refreshButtons(); -} - -void AccountPopupWidget::loadAvatar(const QUrl &avatarUrl) -{ - if (!this->avatarMap.tryGet(this->popupWidgetUser.userID, this->avatar)) { - if (!avatarUrl.isEmpty()) { - QNetworkRequest req(avatarUrl); - static auto manager = new QNetworkAccessManager(); - auto *reply = manager->get(req); - - QObject::connect(reply, &QNetworkReply::finished, this, [=] { - if (reply->error() == QNetworkReply::NoError) { - const auto data = reply->readAll(); - this->avatar.loadFromData(data); - this->avatarMap.insert(this->popupWidgetUser.userID, this->avatar); - this->ui->lblAvatar->setPixmap(this->avatar); - } else { - this->ui->lblAvatar->setText("ERROR"); - } - }); - } else { - this->ui->lblAvatar->setText("No Avatar"); - } - } else { - this->ui->lblAvatar->setPixmap(this->avatar); - } -} - -void AccountPopupWidget::scaleChangedEvent(float newDpi) -{ - this->setStyleSheet(QString("* { font-size: px; }") - .replace("", QString::number(int(12 * newDpi)))); - - this->ui->lblAvatar->setFixedSize(int(100 * newDpi), int(100 * newDpi)); -} - -void AccountPopupWidget::updateButtons(QWidget *layout, bool state) -{ - for (auto button : layout->findChildren()) { - button->setVisible(state); - } -} - -void AccountPopupWidget::timeout(QPushButton *button, int time) -{ - QObject::connect(button, &QPushButton::clicked, this, [=]() { - this->channel->sendMessage("/timeout " + this->ui->lblUsername->text() + " " + - QString::number(time)); - }); -} - -void AccountPopupWidget::sendCommand(QPushButton *button, QString command) -{ - QObject::connect(button, &QPushButton::clicked, this, [=]() { - this->channel->sendMessage(command + this->ui->lblUsername->text()); - }); -} - -void AccountPopupWidget::refreshLayouts() -{ - auto currentTwitchUser = getApp()->accounts->twitch.getCurrent(); - if (!currentTwitchUser) { - // No twitch user set (should never happen) - return; - } - - QString loggedInUsername = currentTwitchUser->getUserName(); - QString popupUsername = this->ui->lblUsername->text(); - - bool showModLayout = false; - bool showUserLayout = false; - bool showOwnerLayout = false; - - if (loggedInUsername == popupUsername) { - // Clicked user is the same as the logged in user - showModLayout = false; - showUserLayout = false; - showOwnerLayout = false; - } else { - showUserLayout = true; - - switch (this->loggedInUser.userType) { - case UserType::Mod: { - showModLayout = true; - } break; - - case UserType::Owner: { - showModLayout = true; - showOwnerLayout = true; - } break; - } - } - - if (this->popupWidgetUser.userType == UserType::Owner) { - showModLayout = false; - showOwnerLayout = false; - } - - if (this->popupWidgetUser.userType == UserType::Mod && - this->loggedInUser.userType != UserType::Owner) { - showModLayout = false; - } - - this->updateButtons(this->ui->modLayout, showModLayout); - this->updateButtons(this->ui->userLayout, showUserLayout); - this->updateButtons(this->ui->ownerLayout, showOwnerLayout); -} - -void AccountPopupWidget::actuallyRefreshButtons() -{ - if (this->relationship.isFollowingSet()) { - if (this->relationship.isFollowing()) { - this->ui->follow->setText("Unfollow"); - } else { - this->ui->follow->setText("Follow"); - } - - this->ui->follow->setEnabled(true); - } - - if (this->relationship.isIgnoringSet()) { - if (this->relationship.isIgnoring()) { - this->ui->ignore->setText("Unignore"); - } else { - this->ui->ignore->setText("Ignore"); - } - - this->ui->ignore->setEnabled(true); - } -} - -void AccountPopupWidget::focusOutEvent(QFocusEvent *) -{ - this->hide(); - this->ui->lblFollowers->setText("Loading..."); - this->ui->lblViews->setText("Loading..."); - this->ui->lblAccountAge->setText("Loading..."); - this->ui->lblUsername->setText("Loading..."); - this->ui->lblAvatar->setText("Loading..."); -} - -void AccountPopupWidget::showEvent(QShowEvent *) -{ - this->loggedInUser.refreshUserType(this->channel, true); - this->popupWidgetUser.refreshUserType(this->channel, false); - - this->ui->follow->setEnabled(false); - this->ui->ignore->setEnabled(false); - - this->refreshButtons(); - - this->refreshLayouts(); - - QString blacklisted = getApp()->settings->highlightUserBlacklist; - QStringList list = blacklisted.split("\n", QString::SkipEmptyParts); - if (list.contains(this->ui->lblUsername->text(), Qt::CaseInsensitive)) { - this->ui->disableHighlights->hide(); - this->ui->enableHighlights->show(); - } else { - this->ui->disableHighlights->show(); - this->ui->enableHighlights->hide(); - } -} - -} // namespace widgets -} // namespace chatterino diff --git a/src/widgets/accountpopup.hpp b/src/widgets/accountpopup.hpp deleted file mode 100644 index b35c6d167..000000000 --- a/src/widgets/accountpopup.hpp +++ /dev/null @@ -1,130 +0,0 @@ -#pragma once - -#include "basewindow.hpp" -#include "providers/twitch/twitchchannel.hpp" -#include "util/concurrentmap.hpp" - -#include -#include - -#include - -namespace Ui { -class AccountPopup; -} // namespace Ui - -namespace chatterino { - -class Channel; - -namespace widgets { - -class AccountPopupWidget final : public BaseWindow -{ - Q_OBJECT - -public: - AccountPopupWidget(ChannelPtr _channel); - - void setName(const QString &name); - void setChannel(ChannelPtr _channel); - -public slots: - void actuallyRefreshButtons(); - -signals: - void refreshButtons(); - -protected: - void scaleChangedEvent(float newDpi) override; - -private: - Ui::AccountPopup *ui; - - void getUserId(); - void getUserData(); - void loadAvatar(const QUrl &avatarUrl); - - void updateButtons(QWidget *layout, bool state); - void timeout(QPushButton *button, int time); - void sendCommand(QPushButton *button, QString command); - - void refreshLayouts(); - - enum class UserType { User, Mod, Owner }; - - ChannelPtr channel; - - QPixmap avatar; - - util::ConcurrentMap avatarMap; - - struct User { - QString username; - QString userID; - UserType userType = UserType::User; - - void refreshUserType(const ChannelPtr &channel, bool loggedInUser); - }; - - User loggedInUser; - - User popupWidgetUser; - - struct { - void reset() - { - this->following = -1; - this->ignoring = -1; - } - - bool isFollowing() const - { - return this->following == 1; - } - - bool isFollowingSet() const - { - return this->following != -1; - } - - void setFollowing(bool newVal) - { - if (newVal) { - this->following = 1; - } else { - this->following = 0; - } - } - - bool isIgnoring() const - { - return this->ignoring == 1; - } - - bool isIgnoringSet() const - { - return this->ignoring != -1; - } - - void setIgnoring(bool newVal) - { - if (newVal) { - this->ignoring = 1; - } else { - this->ignoring = 0; - } - } - - private: - int following = -1; - int ignoring = -1; - } relationship; - -protected: - void focusOutEvent(QFocusEvent *event) override; - void showEvent(QShowEvent *event) override; -}; - -} // namespace widgets -} // namespace chatterino diff --git a/src/widgets/helper/channelview.cpp b/src/widgets/helper/channelview.cpp index f27961a22..351abd2f3 100644 --- a/src/widgets/helper/channelview.cpp +++ b/src/widgets/helper/channelview.cpp @@ -9,7 +9,6 @@ #include "singletons/settingsmanager.hpp" #include "singletons/thememanager.hpp" #include "singletons/windowmanager.hpp" -#include "ui_accountpopupform.h" #include "util/benchmark.hpp" #include "util/distancebetweenpoints.hpp" #include "widgets/split.hpp" @@ -42,13 +41,12 @@ namespace widgets { ChannelView::ChannelView(BaseWidget *parent) : BaseWidget(parent) , scrollBar(this) - , userPopupWidget(std::shared_ptr()) { auto app = getApp(); this->setMouseTracking(true); - this->managedConnections.emplace_back(app->settings->wordFlagsChanged.connect([=] { + this->managedConnections.emplace_back(app->settings->wordFlagsChanged.connect([this] { this->layoutMessages(); this->update(); })); @@ -478,7 +476,6 @@ void ChannelView::setChannel(ChannelPtr newChannel) this->channel = newChannel; - this->userPopupWidget.setChannel(newChannel); this->layoutMessages(); this->queueUpdate(); } @@ -911,7 +908,6 @@ void ChannelView::mouseReleaseEvent(QMouseEvent *event) // no message found if (!tryGetMessageAt(event->pos(), layout, relativePos, messageIndex)) { // No message at clicked position - this->userPopupWidget.hide(); return; } @@ -1109,7 +1105,6 @@ void ChannelView::handleLinkClick(QMouseEvent *event, const messages::Link &link userPopup->setData(user, this->channel); userPopup->setAttribute(Qt::WA_DeleteOnClose); userPopup->move(event->globalPos()); - userPopup->setFocus(); userPopup->show(); // this->userPopupWidget.setName(user); diff --git a/src/widgets/helper/channelview.hpp b/src/widgets/helper/channelview.hpp index db74aa2bb..fc1634ed1 100644 --- a/src/widgets/helper/channelview.hpp +++ b/src/widgets/helper/channelview.hpp @@ -6,7 +6,6 @@ #include "messages/limitedqueuesnapshot.hpp" #include "messages/messageelement.hpp" #include "messages/selection.hpp" -#include "widgets/accountpopup.hpp" #include "widgets/basewidget.hpp" #include "widgets/helper/rippleeffectlabel.hpp" #include "widgets/scrollbar.hpp" @@ -124,7 +123,6 @@ private: bool showingLatestMessages = true; bool enableScrollingToBottom = true; - AccountPopupWidget userPopupWidget; bool onlyUpdateEmotes = false; // Mouse event variables diff --git a/src/widgets/split.cpp b/src/widgets/split.cpp index e9a14c641..74265bef0 100644 --- a/src/widgets/split.cpp +++ b/src/widgets/split.cpp @@ -19,6 +19,7 @@ #include "widgets/selectchanneldialog.hpp" #include "widgets/splitcontainer.hpp" #include "widgets/textinputdialog.hpp" +#include "widgets/userinfopopup.hpp" #include "widgets/window.hpp" #include @@ -425,8 +426,6 @@ void Split::doOpenViewerList() this->height() - this->header.height() - this->input.height()); viewerDock->move(0, this->header.height()); - auto accountPopup = new AccountPopupWidget(this->getChannel()); - accountPopup->setAttribute(Qt::WA_DeleteOnClose); auto multiWidget = new QWidget(viewerDock); auto dockVbox = new QVBoxLayout(viewerDock); auto searchBar = new QLineEdit(viewerDock); @@ -480,13 +479,13 @@ void Split::doOpenViewerList() QObject::connect(chattersList, &QListWidget::doubleClicked, this, [=]() { if (!labels.contains(chattersList->currentItem()->text())) { - doOpenAccountPopupWidget(accountPopup, chattersList->currentItem()->text()); + doOpenUserInfoPopup(chattersList->currentItem()->text()); } }); QObject::connect(resultList, &QListWidget::doubleClicked, this, [=]() { if (!labels.contains(resultList->currentItem()->text())) { - doOpenAccountPopupWidget(accountPopup, resultList->currentItem()->text()); + doOpenUserInfoPopup(resultList->currentItem()->text()); } }); @@ -502,12 +501,13 @@ void Split::doOpenViewerList() viewerDock->show(); } -void Split::doOpenAccountPopupWidget(AccountPopupWidget *widget, QString user) +void Split::doOpenUserInfoPopup(const QString &user) { - widget->setName(user); - widget->show(); - widget->setFocus(); - widget->moveTo(this, QCursor::pos()); + auto *userPopup = new UserInfoPopup; + userPopup->setData(user, this->getChannel()); + userPopup->setAttribute(Qt::WA_DeleteOnClose); + userPopup->move(QCursor::pos()); + userPopup->show(); } void Split::doCopy() diff --git a/src/widgets/split.hpp b/src/widgets/split.hpp index 4d7bf2bf6..10cd942c6 100644 --- a/src/widgets/split.hpp +++ b/src/widgets/split.hpp @@ -108,7 +108,7 @@ private: std::vector managedConnections; - void doOpenAccountPopupWidget(AccountPopupWidget *widget, QString user); + void doOpenUserInfoPopup(const QString &user); void channelNameUpdated(const QString &newChannelName); void handleModifiers(Qt::KeyboardModifiers modifiers);