Merge branch 'master-flameshotorg' into master_nc_merge_upstream

# Conflicts:
#	.travis.yml
#	appveyor.yml
#	data/graphics.qrc
#	data/img/app/keyboard.svg
#	data/img/material/black/delete.png
#	data/img/material/black/delete.svg
#	data/img/material/black/filepath.svg
#	data/img/material/black/shortcut.svg
#	data/img/material/white/filepath.svg
#	data/img/material/white/shortcut.svg
#	data/translations/Internationalization_hu.ts
#	data/translations/Internationalization_ka.ts
#	external/Qt-Color-Widgets/src/color_wheel.cpp
#	external/singleapplication/singleapplication.cpp
#	flameshot.pro
#	src/cli/commandlineparser.cpp
#	src/config/buttonlistview.cpp
#	src/config/configwindow.cpp
#	src/config/configwindow.h
#	src/config/geneneralconf.cpp
#	src/config/geneneralconf.h
#	src/config/uicoloreditor.cpp
#	src/config/uicoloreditor.h
#	src/core/controller.cpp
#	src/core/globalshortcutfilter.cpp
#	src/main.cpp
#	src/third-party/Qt-Color-Widgets/src/color_utils.cpp
#	src/tools/abstractactiontool.h
#	src/tools/abstractpathtool.h
#	src/tools/arrow/arrowtool.cpp
#	src/tools/arrow/arrowtool.h
#	src/tools/blur/blurtool.cpp
#	src/tools/capturetool.h
#	src/tools/circle/circletool.cpp
#	src/tools/circle/circletool.h
#	src/tools/copy/copytool.cpp
#	src/tools/copy/copytool.h
#	src/tools/exit/exittool.cpp
#	src/tools/exit/exittool.h
#	src/tools/imgur/imguruploader.cpp
#	src/tools/launcher/applaunchertool.cpp
#	src/tools/launcher/applaunchertool.h
#	src/tools/launcher/applauncherwidget.cpp
#	src/tools/launcher/openwithprogram.cpp
#	src/tools/line/linetool.cpp
#	src/tools/line/linetool.h
#	src/tools/marker/markertool.cpp
#	src/tools/marker/markertool.h
#	src/tools/move/movetool.cpp
#	src/tools/pencil/penciltool.cpp
#	src/tools/pencil/penciltool.h
#	src/tools/pin/pintool.cpp
#	src/tools/pin/pintool.h
#	src/tools/pin/pinwidget.cpp
#	src/tools/pixelate/pixelatetool.h
#	src/tools/rectangle/rectangletool.cpp
#	src/tools/rectangle/rectangletool.h
#	src/tools/redo/redotool.cpp
#	src/tools/redo/redotool.h
#	src/tools/save/savetool.cpp
#	src/tools/save/savetool.h
#	src/tools/selection/selectiontool.cpp
#	src/tools/selection/selectiontool.h
#	src/tools/sizeindicator/sizeindicatortool.cpp
#	src/tools/sizeindicator/sizeindicatortool.h
#	src/tools/storage/imgur/imguruploader.h
#	src/tools/storage/imgur/imguruploadertool.cpp
#	src/tools/storage/imgur/imguruploadertool.h
#	src/tools/text/textconfig.cpp
#	src/tools/text/texttool.cpp
#	src/tools/text/texttool.h
#	src/tools/toolfactory.cpp
#	src/tools/toolfactory.h
#	src/tools/undo/undotool.cpp
#	src/tools/undo/undotool.h
#	src/utils/confighandler.cpp
#	src/utils/confighandler.h
#	src/utils/dbusutils.cpp
#	src/utils/screenshotsaver.cpp
#	src/utils/screenshotsaver.h
#	src/widgets/capture/buttonhandler.cpp
#	src/widgets/capture/buttonhandler.h
#	src/widgets/capture/capturebutton.cpp
#	src/widgets/capture/capturebutton.h
#	src/widgets/capture/capturewidget.cpp
#	src/widgets/capture/capturewidget.h
#	src/widgets/capture/colorpicker.cpp
#	src/widgets/capturelauncher.cpp
#	src/widgets/infowindow.cpp
#	src/widgets/infowindow.h
#	src/widgets/panel/sidepanelwidget.cpp
#	src/widgets/panel/utilitypanel.cpp
#	src/widgets/panel/utilitypanel.h
#	translations/Internationalization_ca.ts
#	translations/Internationalization_de_DE.ts
#	translations/Internationalization_es.ts
#	translations/Internationalization_fr.ts
#	translations/Internationalization_ja.ts
#	translations/Internationalization_nl.ts
#	translations/Internationalization_pl.ts
#	translations/Internationalization_pt_br.ts
#	translations/Internationalization_ru.ts
#	translations/Internationalization_sk.ts
#	translations/Internationalization_sr.ts
#	translations/Internationalization_tr.ts
#	translations/Internationalization_uk.ts
#	translations/Internationalization_zh_CN.ts
#	translations/Internationalization_zh_TW.ts
This commit is contained in:
Yuriy Puchkov
2020-09-24 18:52:49 +03:00
351 changed files with 23741 additions and 14935 deletions

View File

@@ -36,6 +36,7 @@
#include "src/widgets/capture/hovereventfilter.h"
#include "src/widgets/capture/modificationcommand.h"
#include "src/widgets/capture/notifierbox.h"
#include "src/widgets/orientablepushbutton.h"
#include "src/widgets/panel/sidepanelwidget.h"
#include <QApplication>
#include <QBuffer>
@@ -47,9 +48,10 @@
#include <QScreen>
#include <QShortcut>
#include <QUndoView>
#include <draggablewidgetmaker.h>
// CaptureWidget is the main component used to capture the screen. It contains
// an are of selection with its respective buttons.
// an area of selection with its respective buttons.
// enableSaveWIndow
CaptureWidget::CaptureWidget(const uint id,
@@ -86,7 +88,7 @@ CaptureWidget::CaptureWidget(const uint id,
setMouseTracking(true);
initContext(savePath, fullScreen);
initShortcuts();
m_context.circleCount = 1;
#ifdef Q_OS_WIN
// Top left of the whole set of screens
QPoint topLeft(0, 0);
@@ -175,13 +177,14 @@ void CaptureWidget::updateButtons()
m_uiColor = m_config.uiMainColorValue();
m_contrastUiColor = m_config.uiContrastColorValue();
QVector<CaptureButton*> vectorButtons;
for (const CaptureButton::ButtonType& t : m_config.getButtons()) {
CaptureButton* b = new CaptureButton(t, this);
if (t == CaptureButton::TYPE_SELECTIONINDICATOR) {
auto buttons = m_config.getButtons();
QVector<CaptureToolButton*> vectorButtons;
for (const CaptureToolButton::ButtonType& t : buttons) {
CaptureToolButton* b = new CaptureToolButton(t, this);
if (t == CaptureToolButton::TYPE_SELECTIONINDICATOR) {
m_sizeIndButton = b;
}
b->setColor(m_uiColor);
makeChild(b);
@@ -317,7 +320,7 @@ void CaptureWidget::paintEvent(QPaintEvent*)
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(m_uiColor);
for (auto r : m_selection->handlerAreas()) {
painter.drawRoundRect(r, 100, 100);
painter.drawRoundedRect(r, 100, 100);
}
}
}
@@ -604,7 +607,7 @@ void CaptureWidget::keyReleaseEvent(QKeyEvent* e)
void CaptureWidget::wheelEvent(QWheelEvent* e)
{
m_context.thickness += e->delta() / 120;
m_context.thickness += e->angleDelta().y() / 120;
m_context.thickness = qBound(0, m_context.thickness, 100);
QPoint topLeft =
qApp->desktop()
@@ -624,8 +627,8 @@ void CaptureWidget::resizeEvent(QResizeEvent* e)
QWidget::resizeEvent(e);
m_context.widgetDimensions = rect();
m_context.widgetOffset = mapToGlobal(QPoint(0, 0));
m_panel->setFixedHeight(height());
if (!m_context.fullscreen) {
m_panel->setFixedHeight(height());
m_buttonHandler->updateScreenRegions(rect());
}
}
@@ -649,12 +652,32 @@ void CaptureWidget::initContext(const QString& savePath, bool fullscreen)
void CaptureWidget::initPanel()
{
m_panel = new UtilityPanel(this);
makeChild(m_panel);
QRect panelRect = rect();
if (m_context.fullscreen) {
panelRect = QGuiApplication::primaryScreen()->geometry();
}
ConfigHandler config;
if (config.showSidePanelButtonValue()) {
auto* panelToggleButton =
new OrientablePushButton(tr("Tool Settings"), this);
makeChild(panelToggleButton);
panelToggleButton->setOrientation(
OrientablePushButton::VerticalBottomToTop);
panelToggleButton->move(panelRect.x(),
panelRect.y() + panelRect.height() / 2 -
panelToggleButton->width() / 2);
panelToggleButton->setCursor(Qt::ArrowCursor);
(new DraggableWidgetMaker(this))->makeDraggable(panelToggleButton);
connect(panelToggleButton,
&QPushButton::clicked,
this,
&CaptureWidget::togglePanel);
}
m_panel = new UtilityPanel(this);
makeChild(m_panel);
panelRect.moveTo(mapFromGlobal(panelRect.topLeft()));
panelRect.setWidth(m_colorPicker->width() * 1.5);
m_panel->setGeometry(panelRect);
@@ -694,7 +717,7 @@ void CaptureWidget::initSelection()
m_selection->setGeometry(QRect());
}
void CaptureWidget::setState(CaptureButton* b)
void CaptureWidget::setState(CaptureToolButton* b)
{
if (!b) {
return;
@@ -748,6 +771,15 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r)
m_undoStack.setIndex(0);
update();
break;
case CaptureTool::REQ_INCREMENT_CIRCLE_COUNT:
incrementCircleCount();
break;
case CaptureTool::REQ_DECREMENT_CIRCLE_COUNT:
decrementCircleCount();
break;
case CaptureTool::REQ_CLOSE_GUI:
close();
break;
@@ -766,6 +798,9 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r)
m_undoStack.undo();
break;
case CaptureTool::REQ_REDO_MODIFICATION:
if (m_undoStack.redoText() == "Circle Counter") {
this->incrementCircleCount();
}
m_undoStack.redo();
break;
case CaptureTool::REQ_REDRAW:
@@ -775,6 +810,7 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r)
m_panel->toggle();
break;
case CaptureTool::REQ_SHOW_COLOR_PICKER:
// TODO
break;
case CaptureTool::REQ_MOVE_MODE:
setState(m_activeButton); // Disable the actual button
@@ -830,6 +866,16 @@ void CaptureWidget::setDrawColor(const QColor& c)
}
}
void CaptureWidget::incrementCircleCount()
{
m_context.circleCount++;
}
void CaptureWidget::decrementCircleCount()
{
m_context.circleCount--;
}
void CaptureWidget::setDrawThickness(const int& t)
{
m_context.thickness = qBound(0, t, 100);
@@ -1069,7 +1115,7 @@ void CaptureWidget::saveScreenshot()
if (m_context.savePath.isEmpty()) {
ScreenshotSaver().saveToFilesystemGUI(pixmap());
} else {
ScreenshotSaver().saveToFilesystem(pixmap(), m_context.savePath);
ScreenshotSaver().saveToFilesystem(pixmap(), m_context.savePath, "");
}
close();
}