Files
flameshot/src/tools/pin/pintool.cpp
Boyuan Yang fe7affa7f8 tools: pin: pintool.h,cpp: Convert to unix fileending
Since pintool.h and pintool.cpp were using \r\n instead of \n,
this commit fixes that and use \n only.
2021-02-20 19:26:30 -05:00

81 lines
2.1 KiB
C++

// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors
#include "pintool.h"
#include "src/core/qguiappcurrentscreen.h"
#include "src/tools/pin/pinwidget.h"
#include <QScreen>
PinTool::PinTool(QObject* parent)
: AbstractActionTool(parent)
{}
bool PinTool::closeOnButtonPressed() const
{
return true;
}
QIcon PinTool::icon(const QColor& background, bool inEditor) const
{
Q_UNUSED(inEditor);
return QIcon(iconPath(background) + "pin.svg");
}
QString PinTool::name() const
{
return tr("Pin Tool");
}
ToolType PinTool::nameID() const
{
return ToolType::PIN;
}
QString PinTool::description() const
{
return tr("Pin image on the desktop");
}
QWidget* PinTool::widget()
{
qreal devicePixelRatio = 1;
#if defined(Q_OS_MACOS)
QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen();
if (currentScreen) {
devicePixelRatio = currentScreen->devicePixelRatio();
}
#endif
PinWidget* w = new PinWidget(m_pixmap);
const int m = w->margin() * devicePixelRatio;
QRect adjusted_pos = m_geometry + QMargins(m, m, m, m);
w->setGeometry(adjusted_pos);
#if defined(Q_OS_MACOS)
if (currentScreen) {
QPoint topLeft = currentScreen->geometry().topLeft();
adjusted_pos.setX((adjusted_pos.x() - topLeft.x()) / devicePixelRatio +
topLeft.x());
adjusted_pos.setY((adjusted_pos.y() - topLeft.y()) / devicePixelRatio +
topLeft.y());
adjusted_pos.setWidth(adjusted_pos.size().width() / devicePixelRatio);
adjusted_pos.setHeight(adjusted_pos.size().height() / devicePixelRatio);
w->resize(0, 0);
w->move(adjusted_pos.x(), adjusted_pos.y());
}
#endif
return w;
}
CaptureTool* PinTool::copy(QObject* parent)
{
return new PinTool(parent);
}
void PinTool::pressed(const CaptureContext& context)
{
emit requestAction(REQ_CAPTURE_DONE_OK);
m_geometry = context.selection;
m_geometry.setTopLeft(m_geometry.topLeft() + context.widgetOffset);
m_pixmap = context.selectedScreenshotArea();
emit requestAction(REQ_ADD_EXTERNAL_WIDGETS);
}