Материал: Разработка и реализация программных средств для работы с веб-контентом в рамках проекта INTERIN PROMIS

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

}DownloadManager::cleanup()

{

if (m_downloads.isEmpty())

return;

m_model->removeRows(0, m_downloads.count());

updateItemCount();

if (m_downloads.isEmpty() && m_iconProvider) {

delete m_iconProvider;

m_iconProvider = 0;

}

m_autoSaver->changeOccurred();

}DownloadManager::updateItemCount()

{

int count = m_downloads.count();

itemCount->setText(count == 1 ? tr("1 Download") : tr("%1 Downloads").arg(count));

}::DownloadModel(DownloadManager *downloadManager, QObject *parent)

: QAbstractListModel(parent)

, m_downloadManager(downloadManager)

{}DownloadModel::data(const QModelIndex &index, int role) const

{

if (index.row() < 0 || index.row() >= rowCount(index.parent()))

return QVariant();

if (role == Qt::ToolTipRole)

if (!m_downloadManager->m_downloads.at(index.row())->downloadedSuccessfully())

return m_downloadManager->m_downloads.at(index.row())->downloadInfoLabel->text();

return QVariant();

}DownloadModel::rowCount(const QModelIndex &parent) const

{ return (parent.isValid()) ? 0 : m_downloadManager->m_downloads.count();}DownloadModel::removeRows(int row, int count, const QModelIndex &parent)

{

if (parent.isValid())

return false;

int lastRow = row + count - 1;

for (int i = lastRow; i >= row; --i) {

if (m_downloadManager->m_downloads.at(i)->downloadedSuccessfully()) {

beginRemoveRows(parent, i, i);

m_downloadManager->m_downloads.takeAt(i)->deleteLater();

endRemoveRows();

}

}

m_downloadManager->m_autoSaver->changeOccurred();

return true;

}

Исходный код диалогового окона печати в pdf

#include "headers/printtopdfdialog.h"

#include "ui_printtopdfdialog.h"

#include <QtCore/QDir>

#ifndef QT_NO_PRINTER

#include <QtPrintSupport/QPageSetupDialog>

#include <QtPrintSupport/QPrinter>

#endif // QT_NO_PRINTER

#include <QtWidgets/QFileDialog>::PrintToPdfDialog(const QString &filePath, QWidget *parent) :

QDialog(parent),

currentPageLayout(QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF(0.0, 0.0, 0.0, 0.0))),

ui(new Ui::PrintToPdfDialog)

{

ui->setupUi(this);

setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);

connect(ui->chooseFilePathButton, &QToolButton::clicked, this, &PrintToPdfDialog::onChooseFilePathButtonClicked);

#ifndef QT_NO_PRINTER

connect(ui->choosePageLayoutButton, &QToolButton::clicked, this, &PrintToPdfDialog::onChoosePageLayoutButtonClicked);

#else

ui->choosePageLayoutButton->hide();

#endif // QT_NO_PRINTER

updatePageLayoutLabel();

setFilePath(filePath);

}::~PrintToPdfDialog()

{

delete ui;

}PrintToPdfDialog::onChoosePageLayoutButtonClicked()

{

#ifndef QT_NO_PRINTER

QPrinter printer;

printer.setPageLayout(currentPageLayout);

QPageSetupDialog dlg(&printer, this);

if (dlg.exec() != QDialog::Accepted)

return;

currentPageLayout.setPageSize(printer.pageLayout().pageSize());

currentPageLayout.setOrientation(printer.pageLayout().orientation());

updatePageLayoutLabel();

#endif // QT_NO_PRINTER

}PrintToPdfDialog::onChooseFilePathButtonClicked()

{

QFileInfo fi(filePath());

QFileDialog dlg(this, tr("Save PDF as"), fi.absolutePath());

dlg.setAcceptMode(QFileDialog::AcceptSave);

dlg.setDefaultSuffix(QStringLiteral(".pdf"));

dlg.selectFile(fi.absoluteFilePath());

if (dlg.exec() != QDialog::Accepted)

return;

setFilePath(dlg.selectedFiles().first());

}PrintToPdfDialog::filePath() const

{

return QDir::fromNativeSeparators(ui->filePathLineEdit->text());

}PrintToPdfDialog::setFilePath(const QString &filePath)

{

ui->filePathLineEdit->setText(QDir::toNativeSeparators(filePath));

}PrintToPdfDialog::pageLayout() const

{

return currentPageLayout;

}PrintToPdfDialog::updatePageLayoutLabel()

{

ui->pageLayoutLabel->setText(QString("%1, %2").arg(

currentPageLayout.pageSize().name()).arg(

currentPageLayout.orientation() == QPageLayout::Portrait

? tr("Portrait") : tr("Landscape")

));

}

Скрипт Inno Setup

#define Name "InterinClient"

#define Version "2.0.5"

#define Publisher "ООО Интерин технологии"

#define URL "http://www.interin.ru"

#define ExeName "InterinClient.exe"

[Setup]={{89ED2222-8C22-4F0B-A1CC-84770F5498F3}}={#Name}={#Version}={#Publisher}={#URL}={#URL}={#URL}={#Name} версия {#Version}=c:\Interin\InterinAlpha=Interin={app}\{#ExeName}=D:\repos\Development\Builds\Windows\x32\InterinClient\install={#Name}_{#Version}_setup=lzma=yes

;DiskSpanning=yes

;SlicesPerDisk=3

;DiskSliceSize=10000000

;ArchitecturesAllowed=x64

;ArchitecturesInstallIn64BitMode=x64

[Languages]: "english"; MessagesFile: "compiler:Default.isl"; LicenseFile: "License_ENG.txt": "russian"; MessagesFile: "compiler:Languages\Russian.isl"; LicenseFile: "License_RUS.txt"

[Tasks]: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; Flags: unchecked

[Files]: "D:\repos\Development\Builds\Windows\x32\InterinClient\release\{#ExeName}"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "D:\repos\Development\Projects\InterinClient\setup\qt.conf"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "D:\repos\Development\Projects\InterinClient\docs\changelog.txt"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "D:\repos\Development\Builds\Windows\x32\InterinClntMainWnd\release\InterinClntMainWnd.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs : "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\libEGL.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\libGLESv2.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\msvcp120.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\msvcr120.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\opengl32sw.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5Gui.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5Network.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5Qml.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5Quick.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5WebChannel.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5WebEngineCore.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5WebEngineWidgets.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5Widgets.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5Xml.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\QtWebEngineProcess.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\bin\Qt5PrintSupport.dll"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\plugins\platforms\qminimal.dll"; DestDir: "{app}\plugins\platforms"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\plugins\platforms\qoffscreen.dll"; DestDir: "{app}\plugins\platforms"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\plugins\platforms\qwindows.dll"; DestDir: "{app}\plugins\platforms"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\resources\*"; DestDir: "{app}\resources"; Flags: ignoreversion recursesubdirs createallsubdirs: "C:\Qt\Qt5.7.0\5.7\msvc2013\translations\qtwebengine_locales\*"; DestDir: "{app}\translations\qtwebengine_locales"; Flags: ignoreversion recursesubdirs createallsubdirs

;Source: "E:\install\dotNetFx40_Full_x86_x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; Check: not IsRequiredDotNetDetected

[Registry]: HKCU; Subkey: Software\Interin; Flags: createvalueifdoesntexist uninsdeletekey;: HKCU; Subkey: Software\Interin\InterinClient; Flags: createvalueifdoesntexist;: HKCU; Subkey: Software\Interin\InterinClient\ModulesManager; Flags: createvalueifdoesntexist;: HKCU; Subkey: Software\Interin\InterinClient\ModulesManager; ValueType: string; ValueName: main_module; ValueData: MainWindow; Flags: createvalueifdoesntexist;: HKCU; Subkey: Software\Interin\InterinClient\ModulesManager\MainWindow; Flags: createvalueifdoesntexist;: HKCU; Subkey: Software\Interin\InterinClient\ModulesManager\MainWindow; ValueType: string; ValueName:module_file; ValueData: InterinClntMainWnd.dll; Flags: createvalueifdoesntexist;: HKCU; Subkey: Software\Interin\InterinClient\ModulesManager\MainWindow; ValueType: string; ValueName: module_path; ValueData: c:/Interin/InterinAlpha/; Flags: createvalueifdoesntexist;

[Icons]: "{group}\Interin"; Filename: "{app}\{#ExeName}": "{group}\{cm:UninstallProgram, {#Name}}"; Filename: "{uninstallexe}": "{userdesktop}\Интерин Alpha"; Filename: "{app}\{#ExeName}"; Tasks: desktopicon

;[Messages]

;#include "messages_rus.txt"

;[Code]

;#include "InterinClient.pas"

[Run]

;Filename: regedit.exe; Parameters: "/s {tmp}\registry.reg";

;Filename: {tmp}\dotNetFx40_Full_x86_x64.exe; Parameters: "/q:a /c:""install /l /q"""; Check: not IsRequiredDotNetDetected; StatusMsg: Microsoft Framework 4.0 is installed. Please wait...

[UninstallRun]: regedit.exe; Parameters: "/s -HKEY_CURRENT_USER\Software\Interin";

Источник: https://www.bibliofond.ru/view.aspx?id=897371