2018-06-26 14:09:39 +02:00
|
|
|
#include "NotificationPopup.hpp"
|
2018-05-23 22:27:29 +02:00
|
|
|
|
2018-08-11 22:23:06 +02:00
|
|
|
#include "common/Channel.hpp"
|
|
|
|
#include "messages/Message.hpp"
|
2018-06-26 14:09:39 +02:00
|
|
|
#include "widgets/helper/ChannelView.hpp"
|
2018-05-23 22:27:29 +02:00
|
|
|
|
|
|
|
#include <QApplication>
|
|
|
|
#include <QDesktopWidget>
|
|
|
|
#include <QScreen>
|
|
|
|
|
|
|
|
namespace chatterino {
|
|
|
|
|
|
|
|
NotificationPopup::NotificationPopup()
|
2018-06-06 10:46:23 +02:00
|
|
|
: BaseWindow((QWidget *)nullptr, BaseWindow::Frameless)
|
2018-07-06 19:23:47 +02:00
|
|
|
, channel_(std::make_shared<Channel>("notifications", Channel::Type::None))
|
2018-05-23 22:27:29 +02:00
|
|
|
|
|
|
|
{
|
2018-07-06 19:23:47 +02:00
|
|
|
this->channelView_ = new ChannelView(this);
|
2018-05-23 22:27:29 +02:00
|
|
|
|
|
|
|
auto *layout = new QVBoxLayout(this);
|
|
|
|
this->setLayout(layout);
|
|
|
|
|
2018-07-06 19:23:47 +02:00
|
|
|
layout->addWidget(this->channelView_);
|
2018-05-23 22:27:29 +02:00
|
|
|
|
2018-07-06 19:23:47 +02:00
|
|
|
this->channelView_->setChannel(this->channel_);
|
2018-05-23 22:27:29 +02:00
|
|
|
this->setScaleIndependantSize(300, 150);
|
|
|
|
}
|
|
|
|
|
|
|
|
void NotificationPopup::updatePosition()
|
|
|
|
{
|
|
|
|
Location location = BottomRight;
|
|
|
|
|
|
|
|
QDesktopWidget *desktop = QApplication::desktop();
|
|
|
|
const QRect rect = desktop->availableGeometry();
|
|
|
|
|
2018-10-21 13:43:02 +02:00
|
|
|
switch (location)
|
|
|
|
{
|
|
|
|
case BottomRight:
|
|
|
|
{
|
2018-08-06 21:17:03 +02:00
|
|
|
this->move(rect.right() - this->width(),
|
|
|
|
rect.bottom() - this->height());
|
2018-10-21 13:43:02 +02:00
|
|
|
}
|
|
|
|
break;
|
2018-05-23 22:27:29 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-06-28 19:38:57 +02:00
|
|
|
void NotificationPopup::addMessage(MessagePtr msg)
|
2018-05-23 22:27:29 +02:00
|
|
|
{
|
2018-07-06 19:23:47 +02:00
|
|
|
this->channel_->addMessage(msg);
|
2018-05-23 22:27:29 +02:00
|
|
|
|
|
|
|
// QTimer::singleShot(5000, this, [this, msg] { this->channel->remove });
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace chatterino
|