| 42 | #include <QUrl> |
| 43 | |
| 44 | PreviewDialog::PreviewDialog(QWidget *parent) : |
| 45 | QDialog(parent), mAutoclose(0), mAutocloseAction(0), mAutocloseReset(0), mPosition(0), mSize(0) |
| 46 | { |
| 47 | setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint); |
| 48 | setWindowTitle(tr("Screenshot Preview")); |
| 49 | setContextMenuPolicy(Qt::CustomContextMenu); |
| 50 | |
| 51 | auto settings = ScreenshotManager::instance()->settings(); |
| 52 | |
| 53 | mSize = settings->value("options/previewSize", 300).toInt(); |
| 54 | mPosition = settings->value("options/previewPosition", 3).toInt(); |
| 55 | |
| 56 | if (settings->value("options/previewAutoclose", false).toBool()) { |
| 57 | mAutoclose = settings->value("options/previewAutocloseTime").toInt(); |
| 58 | mAutocloseReset = mAutoclose; |
| 59 | mAutocloseAction = settings->value("options/previewAutocloseAction").toInt(); |
| 60 | } |
| 61 | |
| 62 | auto layout = new QHBoxLayout; |
| 63 | mStack = new QStackedLayout; |
| 64 | connect(mStack, &QStackedLayout::currentChanged, this, &PreviewDialog::indexChanged); |
| 65 | |
| 66 | mPrevButton = new QPushButton(os::icon("arrow-left"), "", this); |
| 67 | connect(mPrevButton, &QPushButton::clicked, this, &PreviewDialog::previous); |
| 68 | |
| 69 | mNextButton = new QPushButton(os::icon("arrow-right"), "", this); |
| 70 | connect(mNextButton, &QPushButton::clicked, this, &PreviewDialog::next); |
| 71 | |
| 72 | mPrevButton->setCursor(Qt::PointingHandCursor); |
| 73 | mPrevButton->setFlat(true); |
| 74 | mPrevButton->setGraphicsEffect(os::shadow(Qt::white)); |
| 75 | mPrevButton->setIconSize(QSize(24, 24)); |
| 76 | mPrevButton->setVisible(false); |
| 77 | |
| 78 | mNextButton->setCursor(Qt::PointingHandCursor); |
| 79 | mNextButton->setFlat(true); |
| 80 | mNextButton->setGraphicsEffect(os::shadow(Qt::white)); |
| 81 | mNextButton->setIconSize(QSize(24, 24)); |
| 82 | mNextButton->setVisible(false); |
| 83 | |
| 84 | layout->addWidget(mPrevButton); |
| 85 | layout->addLayout(mStack); |
| 86 | layout->addWidget(mNextButton); |
| 87 | |
| 88 | layout->setMargin(0); |
| 89 | layout->setContentsMargins(6, 6, 6, 6); |
| 90 | |
| 91 | mStack->setMargin(0); |
| 92 | |
| 93 | setMaximumHeight(mSize); |
| 94 | setLayout(layout); |
| 95 | |
| 96 | if (mAutoclose) { |
| 97 | startTimer(1000); |
| 98 | } |
| 99 | |
| 100 | auto contextMenu = new QMenu(this); |
| 101 | |