This commit is contained in:
2020-02-11 17:37:36 +01:00
parent 921f0aa3f3
commit 773ab14a5d
6 changed files with 238 additions and 2 deletions
+5 -1
View File
@@ -21,7 +21,8 @@ cMainWindow::cMainWindow(cSplashScreen* lpSplashScreen, QWidget *parent)
: QMainWindow(parent),
ui(new Ui::cMainWindow),
m_lpSplashScreen(lpSplashScreen),
m_lpFileBrowser(nullptr)
m_lpFileBrowser(nullptr),
m_lpPrint(nullptr)
{
setImageFormats();
@@ -81,6 +82,9 @@ void cMainWindow::initUI()
m_lpFileBrowser = new cFileBrowser(m_lpProgressBar, &m_imageFormats, ui->m_lpSelectedList, m_lpSelectedListModel, this);
ui->m_lpMainTab->addTab(m_lpFileBrowser, "Files");
m_lpPrint = new cPrint(m_lpProgressBar, ui->m_lpSelectedList, m_lpSelectedListModel, this);
ui->m_lpMainTab->addTab(m_lpPrint, "Print");
if(!settings.value("main/maximized").toBool())
{
qint32 iX = settings.value("main/x", QVariant::fromValue(-1)).toInt();
+2
View File
@@ -11,6 +11,7 @@
#include "common.h"
#include "cfilebrowser.h"
#include "cprint.h"
#include <QMainWindow>
#include <QCloseEvent>
@@ -46,6 +47,7 @@ private:
QProgressBar* m_lpProgressBar; /*!< TODO: describe */
cFileBrowser* m_lpFileBrowser; /*!< TODO: describe */
cPrint* m_lpPrint; /*!< TODO: describe */
QStandardItemModel* m_lpSelectedListModel; /*!< TODO: describe */
QList<IMAGEFORMAT> m_imageFormats; /*!< TODO: describe */
+84
View File
@@ -0,0 +1,84 @@
/*!
\file cprint.cpp
*/
#include "cprint.h"
#include "ui_cprint.h"
#include "cfileviewer.h"
#include "cimage.h"
#include <QPrinter>
#include <QPrinterInfo>
#include <QPrintDialog>
#include <QPageSetupDialog>
#include <QPainter>
cPrint::cPrint(QProgressBar* lpProgressBar, QListView* lpSelectedList, QStandardItemModel* lpSelectedListModel, QWidget *parent) :
QWidget(parent),
ui(new Ui::cPrint),
m_lpProgressBar(lpProgressBar),
m_lpSelectedList(lpSelectedList),
m_lpSelectedListModel(lpSelectedListModel)
{
ui->setupUi(this);
m_lpPrinter = new QPrinter;
QString defaultPrinter = QPrinterInfo::defaultPrinterName();
QStringList availablePrinters = QPrinterInfo::availablePrinterNames();
ui->m_lpPrinterSelect->addItems(availablePrinters);
ui->m_lpPrinterSelect->setCurrentText(defaultPrinter);
connect(ui->m_lpPrinterSettings, &QPushButton::clicked, this, &cPrint::onPrinterSettings);
connect(ui->m_lpPrint, &QPushButton::clicked, this, &cPrint::onPrint);
}
cPrint::~cPrint()
{
if(m_lpPrinter)
delete m_lpPrinter;
delete ui;
}
void cPrint::onPrinterSettings()
{
QPageSetupDialog pageSetupDialog(m_lpPrinter);
pageSetupDialog.exec();
}
void cPrint::onPrint()
{
if(!m_lpSelectedListModel->rowCount())
return;
cFileViewer* lpFileViewer = static_cast<cFileViewer*>(m_lpSelectedList->indexWidget(m_lpSelectedListModel->index(0, 0)));
if(!lpFileViewer)
return;
QString fileName = lpFileViewer->fileName();
cImage image(fileName);
if(image.isNull())
return;
QPixmap pixmap = QPixmap::fromImage(image);
QPrintDialog printDialog(m_lpPrinter, this);
if(printDialog.exec())
{
QPainter painter(m_lpPrinter);
QRect rect = painter.viewport();
QSize size = pixmap.size();
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setViewport(rect.x(), rect.y(), size.width(), size.height());
painter.setWindow(pixmap.rect());
painter.drawPixmap(0, 0, pixmap);
}
}
+70
View File
@@ -0,0 +1,70 @@
/*!
\file cprint.h
*/
#ifndef CPRINT_H
#define CPRINT_H
#include <QWidget>
#include <QProgressBar>
#include <QListView>
#include <QStandardItemModel>
#include <QPrinter>
namespace Ui {
class cPrint;
}
/*!
\brief
\class cPrint cprint.h "cprint.h"
*/
class cPrint : public QWidget
{
Q_OBJECT
public:
/*!
\brief
\fn cPrint
\param parent
*/
explicit cPrint(QProgressBar* lpProgressBar, QListView* lpSelectedList, QStandardItemModel* lpSelectedListModel, QWidget *parent = nullptr);
/*!
\brief
\fn ~cPrint
*/
~cPrint();
private:
Ui::cPrint* ui; /*!< TODO: describe */
QProgressBar* m_lpProgressBar; /*!< TODO: describe */
QListView* m_lpSelectedList; /*!< TODO: describe */
QStandardItemModel* m_lpSelectedListModel; /*!< TODO: describe */
QPrinter* m_lpPrinter; /*!< TODO: describe */
private slots:
/*!
\brief
\fn onPrinterSettings
*/
void onPrinterSettings();
/*!
\brief
\fn onPrint
*/
void onPrint();
};
#endif // CPRINT_H
+72
View File
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>cPrint</class>
<widget class="QWidget" name="cPrint">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QComboBox" name="m_lpPrinterSelect"/>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="m_lpPrinterSettings">
<property name="text">
<string>printer settings...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="m_lpPrint">
<property name="text">
<string>print</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
+5 -1
View File
@@ -5,6 +5,7 @@ QMAKE_TARGET_DESCRIPTION = picturePrint
QMAKE_TARGET_COPYRIGHT = (c) 2020 WIN-DESIGN
QT += core gui sql multimedia concurrent
qtHaveModule(printsupport): QT += printsupport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@@ -49,6 +50,7 @@ SOURCES += \
cfileviewer.cpp \
cimage.cpp \
common.cpp \
cprint.cpp \
csplashscreen.cpp \
main.cpp \
cmainwindow.cpp
@@ -60,12 +62,14 @@ HEADERS += \
cimage.h \
cmainwindow.h \
common.h \
cprint.h \
csplashscreen.h
FORMS += \
cfilebrowser.ui \
cfileviewer.ui \
cmainwindow.ui
cmainwindow.ui \
cprint.ui
TRANSLATIONS += \
picturePrint_de_AT.ts