File indexing completed on 2024-03-24 15:17:41
0001 /* 0002 SPDX-FileCopyrightText: 2011 Rafał Kułaga <rl.kulaga@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "pwizprint.h" 0008 0009 #include "finderchart.h" 0010 #include "kstars.h" 0011 #include "ksnotification.h" 0012 #include "Options.h" 0013 #include "printingwizard.h" 0014 0015 #include <KMessageBox> 0016 #include <KIO/StoredTransferJob> 0017 0018 #include <QFileDialog> 0019 #include <QTemporaryFile> 0020 #include <QPrintPreviewDialog> 0021 #include <QPrinter> 0022 #include <QPrintDialog> 0023 #include <QPointer> 0024 0025 PWizPrintUI::PWizPrintUI(PrintingWizard *wizard, QWidget *parent) : QFrame(parent), m_ParentWizard(wizard) 0026 { 0027 setupUi(this); 0028 0029 connect(previewButton, SIGNAL(clicked()), this, SLOT(slotPreview())); 0030 connect(printButton, SIGNAL(clicked()), this, SLOT(slotPrint())); 0031 connect(exportButton, SIGNAL(clicked()), this, SLOT(slotExport())); 0032 } 0033 0034 void PWizPrintUI::slotPreview() 0035 { 0036 QPointer<QPrintPreviewDialog> previewDlg(new QPrintPreviewDialog(m_ParentWizard->getPrinter(), KStars::Instance())); 0037 connect(previewDlg, SIGNAL(paintRequested(QPrinter*)), SLOT(slotPrintPreview(QPrinter*))); 0038 previewDlg->exec(); 0039 delete previewDlg; 0040 } 0041 0042 void PWizPrintUI::slotPrintPreview(QPrinter *printer) 0043 { 0044 printDocument(printer); 0045 } 0046 0047 void PWizPrintUI::slotPrint() 0048 { 0049 QPointer<QPrintDialog> dialog(new QPrintDialog(m_ParentWizard->getPrinter(), KStars::Instance())); 0050 if (dialog->exec() == QDialog::Accepted) 0051 { 0052 printDocument(m_ParentWizard->getPrinter()); 0053 } 0054 delete dialog; 0055 } 0056 0057 void PWizPrintUI::printDocument(QPrinter *printer) 0058 { 0059 m_ParentWizard->getFinderChart()->print(printer); 0060 } 0061 0062 void PWizPrintUI::slotExport() 0063 { 0064 QUrl url = 0065 QFileDialog::getSaveFileUrl(KStars::Instance(), i18nc("@title:window", "Export"), QUrl(QDir::homePath()), 0066 "application/pdf application/postscript application/vnd.oasis.opendocument.text"); 0067 //User cancelled file selection dialog - abort image export 0068 if (url.isEmpty()) 0069 { 0070 return; 0071 } 0072 0073 //Warn user if file exists! 0074 if (QFile::exists(url.toLocalFile())) 0075 { 0076 int r = KMessageBox::warningContinueCancel( 0077 parentWidget(), i18n("A file named \"%1\" already exists. Overwrite it?", url.fileName()), 0078 i18n("Overwrite File?"), KStandardGuiItem::overwrite()); 0079 if (r == KMessageBox::Cancel) 0080 return; 0081 } 0082 0083 QString urlStr = url.url(); 0084 if (!urlStr.contains(QDir::separator())) 0085 { 0086 urlStr = QDir::homePath() + '/' + urlStr; 0087 } 0088 0089 QTemporaryFile tmpfile; 0090 tmpfile.open(); 0091 QString fname; 0092 0093 if (url.isValid()) 0094 { 0095 if (url.isLocalFile()) 0096 { 0097 fname = url.toLocalFile(); 0098 } 0099 0100 else 0101 { 0102 fname = tmpfile.fileName(); 0103 } 0104 0105 //Determine desired image format from filename extension 0106 QString ext = fname.mid(fname.lastIndexOf(".") + 1); 0107 if (ext == "pdf" || ext == "ps") 0108 { 0109 m_ParentWizard->getFinderChart()->writePsPdf(fname); 0110 } 0111 else if (ext == "odt") 0112 { 0113 m_ParentWizard->getFinderChart()->writeOdt(fname); 0114 } 0115 else 0116 { 0117 return; 0118 } 0119 0120 if (tmpfile.fileName() == fname) 0121 { 0122 //attempt to upload image to remote location 0123 if (KIO::storedHttpPost(&tmpfile, url)->exec() == false) 0124 //if(!KIO::NetAccess::upload(tmpfile.fileName(), url, this)) 0125 { 0126 QString message = i18n("Could not upload file to remote location: %1", url.url()); 0127 KSNotification::sorry(message, i18n("Could not upload file")); 0128 } 0129 } 0130 } 0131 }