mirror-chatterino2/src/widgets/TooltipWidget.cpp

101 lines
2.2 KiB
C++
Raw Normal View History

2018-06-26 14:09:39 +02:00
#include "TooltipWidget.hpp"
2018-06-26 14:09:39 +02:00
#include "Application.hpp"
2018-06-28 19:46:45 +02:00
#include "singletons/Fonts.hpp"
2018-06-28 20:03:04 +02:00
#include "singletons/Theme.hpp"
2018-01-22 20:14:43 +01:00
#include <QDebug>
#include <QDesktopWidget>
#include <QStyle>
#include <QVBoxLayout>
#ifdef USEWINSDK
#include <Windows.h>
#endif
namespace chatterino {
2018-05-26 17:11:09 +02:00
TooltipWidget *TooltipWidget::getInstance()
{
static TooltipWidget *tooltipWidget = nullptr;
if (tooltipWidget == nullptr) {
tooltipWidget = new TooltipWidget();
}
return tooltipWidget;
}
TooltipWidget::TooltipWidget(BaseWidget *parent)
: BaseWindow(parent, BaseWindow::TopMost)
2018-07-06 19:23:47 +02:00
, displayText_(new QLabel())
{
auto app = getApp();
2018-01-22 20:14:43 +01:00
this->setStyleSheet("color: #fff; background: #000");
this->setWindowOpacity(0.8);
2018-01-22 20:14:43 +01:00
this->updateFont();
this->setStayInScreenRect(true);
this->setAttribute(Qt::WA_ShowWithoutActivating);
2018-08-06 21:17:03 +02:00
this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint |
Qt::X11BypassWindowManagerHint |
Qt::BypassWindowManagerHint);
2018-07-06 19:23:47 +02:00
displayText_->setAlignment(Qt::AlignHCenter);
displayText_->setText("tooltip text");
auto layout = new QVBoxLayout();
layout->setContentsMargins(10, 5, 10, 5);
2018-07-06 19:23:47 +02:00
layout->addWidget(displayText_);
this->setLayout(layout);
2018-08-06 21:17:03 +02:00
this->fontChangedConnection_ =
app->fonts->fontChanged.connect([this] { this->updateFont(); });
2018-01-22 20:14:43 +01:00
}
TooltipWidget::~TooltipWidget()
{
2018-07-06 19:23:47 +02:00
this->fontChangedConnection_.disconnect();
2018-01-22 20:14:43 +01:00
}
#ifdef USEWINSDK
void TooltipWidget::raise()
{
2018-05-26 17:11:09 +02:00
::SetWindowPos(HWND(this->winId()), HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}
#endif
2018-07-06 17:11:37 +02:00
void TooltipWidget::themeChangedEvent()
2018-05-16 14:55:45 +02:00
{
this->setStyleSheet("color: #fff; background: #000");
}
2018-01-25 20:49:49 +01:00
void TooltipWidget::scaleChangedEvent(float)
2018-01-22 20:14:43 +01:00
{
this->updateFont();
}
void TooltipWidget::updateFont()
{
auto app = getApp();
2018-08-06 21:17:03 +02:00
this->setFont(
app->fonts->getFont(FontStyle::ChatMediumSmall, this->getScale()));
}
void TooltipWidget::setText(QString text)
{
2018-07-06 19:23:47 +02:00
this->displayText_->setText(text);
}
2018-01-22 20:14:43 +01:00
void TooltipWidget::changeEvent(QEvent *)
{
// clear parents event
}
void TooltipWidget::leaveEvent(QEvent *)
{
// clear parents event
}
} // namespace chatterino