KShare/screenareaselector/screenareaselector.cpp

56 lines
1.9 KiB
C++
Raw Normal View History

2017-05-31 17:24:17 +02:00
#include "screenareaselector.hpp"
#include <QCloseEvent>
#include <QLabel>
2017-05-31 17:24:17 +02:00
#include <QPalette>
#include <QStackedLayout>
2017-05-31 17:24:17 +02:00
#include <QTimer>
#include <settings.hpp>
static QString hintPattern(ScreenAreaSelector::tr("Set the recording region by resizing this.\n%1x%2"));
2017-07-26 21:37:10 +02:00
2017-05-31 17:24:17 +02:00
ScreenAreaSelector::ScreenAreaSelector() {
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_DeleteOnClose);
2017-07-26 21:37:10 +02:00
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
setStyleSheet("background-color: rgba(0, 0, 0, 0.5);");
setWindowTitle(tr("KShare: Select Area (By resizing this window)"));
2017-07-26 21:37:10 +02:00
setAutoFillBackground(true);
2017-05-31 17:24:17 +02:00
QTimer::singleShot(0, [&] {
QVariant val = settings::settings().value("screenareaselector/rect");
if (val.canConvert<QRect>()) {
QRect rect = val.value<QRect>();
resize(rect.size());
move(rect.topLeft());
}
2017-07-26 21:37:10 +02:00
hintLabel->setText(hintPattern.arg(QString::number(width()), QString::number(height())));
show();
2017-05-31 17:24:17 +02:00
});
setLayout(new QStackedLayout());
hintLabel = new QLabel();
hintLabel->setAlignment(Qt::AlignCenter);
layout()->addWidget(hintLabel);
2017-05-31 17:24:17 +02:00
}
ScreenAreaSelector::~ScreenAreaSelector() {
delete hintLabel;
2017-05-31 17:24:17 +02:00
}
void ScreenAreaSelector::keyPressEvent(QKeyEvent *event) {
event->accept();
if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) {
QRect r = QRect(mapToGlobal(QPoint(0, 0)), rect().size());
2017-05-31 17:24:17 +02:00
emit selectedArea(r);
close();
} else if (event->key() == Qt::Key_Escape)
close();
}
void ScreenAreaSelector::resizeEvent(QResizeEvent *) {
2017-07-26 21:37:10 +02:00
hintLabel->setText(hintPattern.arg(QString::number(width()), QString::number(height())));
}
2017-05-31 17:24:17 +02:00
void ScreenAreaSelector::closeEvent(QCloseEvent *) {
QRect r = QRect(mapToGlobal(QPoint(0, 0)), rect().size());
2017-05-31 17:24:17 +02:00
settings::settings().setValue("screenareaselector/rect", r);
}