keepassxc

Форк
0
/
SquareSvgWidget.cpp 
57 строк · 1.7 Кб
1
/*
2
 *  Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
3
 *
4
 *  This program is free software: you can redistribute it and/or modify
5
 *  it under the terms of the GNU General Public License as published by
6
 *  the Free Software Foundation, either version 2 or (at your option)
7
 *  version 3 of the License.
8
 *
9
 *  This program is distributed in the hope that it will be useful,
10
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 *  GNU General Public License for more details.
13
 *
14
 *  You should have received a copy of the GNU General Public License
15
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
 */
17

18
#include "SquareSvgWidget.h"
19
#include <QResizeEvent>
20

21
SquareSvgWidget::SquareSvgWidget(QWidget* parent)
22
    : QSvgWidget(parent)
23
{
24
    Q_ASSERT(parent);
25
    setObjectName("squareSvgWidget");
26
}
27

28
bool SquareSvgWidget::hasHeightForWidth() const
29
{
30
    return true;
31
}
32

33
int SquareSvgWidget::heightForWidth(int width) const
34
{
35
    return width;
36
}
37

38
// The overridden logic allows to keep the SVG image as square and centered by width and height.
39
void SquareSvgWidget::resizeEvent(QResizeEvent*)
40
{
41
    QWidget* pWidget = parentWidget();
42
    Q_ASSERT(pWidget);
43
    if (pWidget) {
44
        auto containerRect = pWidget->contentsRect();
45

46
        auto containerWidth = containerRect.width();
47
        auto containerHeight = containerRect.height();
48

49
        auto squareSize = qMin(containerWidth, containerHeight);
50
        auto halfSquareSize = squareSize >> 1;
51

52
        auto startX = (containerWidth >> 1) - halfSquareSize;
53
        auto startY = (containerHeight >> 1) - halfSquareSize;
54

55
        setGeometry(startX, startY, squareSize, squareSize);
56
    }
57
}
58

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.