mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Progress bar for windows taskbar button
This commit is contained in:
@ -4,7 +4,7 @@
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui
|
||||
QT += core gui winextras
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
|
@ -61,10 +61,16 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
|
||||
m_pageNumberSpinBox(nullptr),
|
||||
m_pageNumberLabel(nullptr),
|
||||
m_pageZoomSpinBox(nullptr),
|
||||
m_isLoadingUI(false)
|
||||
m_isLoadingUI(false),
|
||||
m_progress(new pdf::PDFProgress(this)),
|
||||
m_taskbarButton(new QWinTaskbarButton(this)),
|
||||
m_progressTaskbarIndicator(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
// Initialize task bar progress
|
||||
m_progressTaskbarIndicator = m_taskbarButton->progress();
|
||||
|
||||
// Initialize shortcuts
|
||||
ui->actionOpen->setShortcut(QKeySequence::Open);
|
||||
ui->actionClose->setShortcut(QKeySequence::Close);
|
||||
@ -164,6 +170,9 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
|
||||
connect(m_pdfWidget->getDrawWidgetProxy(), &pdf::PDFDrawWidgetProxy::pageLayoutChanged, this, &PDFViewerMainWindow::onPageLayoutChanged);
|
||||
connect(m_pdfWidget, &pdf::PDFWidget::pageRenderingErrorsChanged, this, &PDFViewerMainWindow::onPageRenderingErrorsChanged, Qt::QueuedConnection);
|
||||
connect(m_settings, &PDFViewerSettings::settingsChanged, this, &PDFViewerMainWindow::onViewerSettingsChanged);
|
||||
connect(m_progress, &pdf::PDFProgress::progressStarted, this, &PDFViewerMainWindow::onProgressStarted);
|
||||
connect(m_progress, &pdf::PDFProgress::progressStep, this, &PDFViewerMainWindow::onProgressStep);
|
||||
connect(m_progress, &pdf::PDFProgress::progressFinished, this, &PDFViewerMainWindow::onProgressFinished);
|
||||
|
||||
updatePageLayoutActions();
|
||||
updateUI(true);
|
||||
@ -242,6 +251,23 @@ void PDFViewerMainWindow::onPageZoomSpinboxEditingFinished()
|
||||
m_pdfWidget->getDrawWidgetProxy()->zoom(m_pageZoomSpinBox->value() / 100.0);
|
||||
}
|
||||
|
||||
void PDFViewerMainWindow::onProgressStarted()
|
||||
{
|
||||
m_progressTaskbarIndicator->setRange(0, 100);
|
||||
m_progressTaskbarIndicator->reset();
|
||||
m_progressTaskbarIndicator->show();
|
||||
}
|
||||
|
||||
void PDFViewerMainWindow::onProgressStep(int percentage)
|
||||
{
|
||||
m_progressTaskbarIndicator->setValue(percentage);
|
||||
}
|
||||
|
||||
void PDFViewerMainWindow::onProgressFinished()
|
||||
{
|
||||
m_progressTaskbarIndicator->hide();
|
||||
}
|
||||
|
||||
void PDFViewerMainWindow::readSettings()
|
||||
{
|
||||
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
|
||||
@ -403,7 +429,7 @@ void PDFViewerMainWindow::openDocument(const QString& fileName)
|
||||
|
||||
// Try to open a new document
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
pdf::PDFDocumentReader reader(qMove(getPasswordCallback));
|
||||
pdf::PDFDocumentReader reader(m_progress, qMove(getPasswordCallback));
|
||||
pdf::PDFDocument document = reader.readFromFile(fileName);
|
||||
QApplication::restoreOverrideCursor();
|
||||
|
||||
@ -497,6 +523,12 @@ void PDFViewerMainWindow::closeEvent(QCloseEvent* event)
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void PDFViewerMainWindow::showEvent(QShowEvent* event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
m_taskbarButton->setWindow(windowHandle());
|
||||
}
|
||||
|
||||
void PDFViewerMainWindow::on_actionPageLayoutSinglePage_triggered()
|
||||
{
|
||||
setPageLayout(pdf::PageLayout::SinglePage);
|
||||
|
@ -20,12 +20,14 @@
|
||||
|
||||
#include "pdfcatalog.h"
|
||||
#include "pdfrenderer.h"
|
||||
|
||||
#include "pdfprogress.h"
|
||||
#include "pdfviewersettings.h"
|
||||
|
||||
#include <QTreeView>
|
||||
#include <QMainWindow>
|
||||
#include <QSharedPointer>
|
||||
#include <QWinTaskbarButton>
|
||||
#include <QWinTaskbarProgress>
|
||||
|
||||
class QLabel;
|
||||
class QSpinBox;
|
||||
@ -56,6 +58,7 @@ public:
|
||||
virtual ~PDFViewerMainWindow() override;
|
||||
|
||||
virtual void closeEvent(QCloseEvent* event) override;
|
||||
virtual void showEvent(QShowEvent* event) override;
|
||||
|
||||
private slots:
|
||||
void on_actionPageLayoutSinglePage_triggered();
|
||||
@ -77,6 +80,10 @@ private:
|
||||
void onPageNumberSpinboxEditingFinished();
|
||||
void onPageZoomSpinboxEditingFinished();
|
||||
|
||||
void onProgressStarted();
|
||||
void onProgressStep(int percentage);
|
||||
void onProgressFinished();
|
||||
|
||||
void readSettings();
|
||||
void writeSettings();
|
||||
|
||||
@ -111,6 +118,9 @@ private:
|
||||
QLabel* m_pageNumberLabel;
|
||||
QDoubleSpinBox* m_pageZoomSpinBox;
|
||||
bool m_isLoadingUI;
|
||||
pdf::PDFProgress* m_progress;
|
||||
QWinTaskbarButton* m_taskbarButton;
|
||||
QWinTaskbarProgress* m_progressTaskbarIndicator;
|
||||
};
|
||||
|
||||
} // namespace pdfviewer
|
||||
|
Reference in New Issue
Block a user