improve clipboard processing
This commit is contained in:
		
							parent
							
								
									25c64b7f5d
								
							
						
					
					
						commit
						0127bc61e6
					
				
					 1 changed files with 78 additions and 64 deletions
				
			
		|  | @ -1424,81 +1424,95 @@ bool ProfileInterface::eventFilter(QObject *watched, QEvent *event) | |||
|             case Qt::Key_V: | ||||
|                 if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) && !QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier)) | ||||
|                 { | ||||
|                     QImage clipboardImage = QApplication::clipboard()->image(); | ||||
|                     if (!clipboardImage.isNull()) | ||||
|                     const QMimeData *clipboardData = QApplication::clipboard()->mimeData(); | ||||
|                     if (clipboardData->hasImage()) | ||||
|                     { | ||||
|                         QImage *snapmaticImage = new QImage(clipboardImage); | ||||
|                         QImage *snapmaticImage = new QImage(qvariant_cast<QImage>(clipboardData->imageData())); | ||||
|                         importImage(snapmaticImage, QDateTime::currentDateTime()); | ||||
|                     } | ||||
|                     QUrl clipboardUrl = QUrl::fromUserInput(QApplication::clipboard()->text()); | ||||
|                     if (clipboardUrl.isValid()) | ||||
|                     else if (clipboardData->hasUrls()) | ||||
|                     { | ||||
|                         QDialog urlPasteDialog(this); | ||||
| #if QT_VERSION >= 0x050000 | ||||
|                         urlPasteDialog.setObjectName(QStringLiteral("UrlPasteDialog")); | ||||
| #else | ||||
|                         urlPasteDialog.setObjectName(QString::fromUtf8("UrlPasteDialog")); | ||||
| #endif | ||||
|                         urlPasteDialog.setWindowFlags(urlPasteDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); | ||||
|                         urlPasteDialog.setWindowTitle(tr("Import...")); | ||||
|                         urlPasteDialog.setModal(true); | ||||
|                         QVBoxLayout urlPasteLayout(&urlPasteDialog); | ||||
| #if QT_VERSION >= 0x050000 | ||||
|                         urlPasteLayout.setObjectName(QStringLiteral("UrlPasteLayout")); | ||||
| #else | ||||
|                         urlPasteLayout.setObjectName(QString::fromUtf8("UrlPasteLayout")); | ||||
| #endif | ||||
|                         urlPasteDialog.setLayout(&urlPasteLayout); | ||||
|                         UiModLabel urlPasteLabel(&urlPasteDialog); | ||||
| #if QT_VERSION >= 0x050000 | ||||
|                         urlPasteLabel.setObjectName(QStringLiteral("UrlPasteLabel")); | ||||
| #else | ||||
|                         urlPasteLabel.setObjectName(QString::fromUtf8("UrlPasteLabel")); | ||||
| #endif | ||||
| 
 | ||||
|                         urlPasteLabel.setText(tr("Prepare Content for Import...")); | ||||
|                         urlPasteLayout.addWidget(&urlPasteLabel); | ||||
|                         urlPasteDialog.setFixedSize(urlPasteDialog.sizeHint()); | ||||
|                         urlPasteDialog.show(); | ||||
| 
 | ||||
|                         QNetworkAccessManager *netManager = new QNetworkAccessManager(); | ||||
|                         QNetworkRequest netRequest(clipboardUrl); | ||||
|                         netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent()); | ||||
|                         netRequest.setRawHeader("Accept", "text/html"); | ||||
|                         netRequest.setRawHeader("Accept-Charset", "utf-8"); | ||||
|                         netRequest.setRawHeader("Accept-Language", "en-US,en;q=0.9"); | ||||
|                         netRequest.setRawHeader("Connection", "keep-alive"); | ||||
|                         QNetworkReply *netReply = netManager->get(netRequest); | ||||
|                         QEventLoop *downloadLoop = new QEventLoop(); | ||||
|                         QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit())); | ||||
|                         QTimer::singleShot(30000, downloadLoop, SLOT(quit())); | ||||
|                         downloadLoop->exec(); | ||||
|                         downloadLoop->disconnect(); | ||||
|                         delete downloadLoop; | ||||
| 
 | ||||
|                         urlPasteDialog.close(); | ||||
| 
 | ||||
|                         if (netReply->isFinished()) | ||||
|                         if (clipboardData->urls().length() >= 2) | ||||
|                         { | ||||
|                             QImage *snapmaticImage = new QImage(); | ||||
|                             QImageReader snapmaticImageReader; | ||||
|                             snapmaticImageReader.setDecideFormatFromContent(true); | ||||
|                             snapmaticImageReader.setDevice(netReply); | ||||
|                             if (snapmaticImageReader.read(snapmaticImage)) | ||||
|                             on_saProfileContent_dropped(clipboardData); // replace later with own function importUrls()
 | ||||
|                         } | ||||
|                         else if (clipboardData->urls().length() == 1) | ||||
|                         { | ||||
|                             QUrl clipboardUrl = clipboardData->urls().at(0); | ||||
|                             if (clipboardUrl.isLocalFile()) | ||||
|                             { | ||||
|                                 importImage(snapmaticImage, QDateTime::currentDateTime()); | ||||
|                                 importFile(clipboardUrl.toLocalFile(), QDateTime::currentDateTime(), true); | ||||
|                             } | ||||
|                             else | ||||
|                             { | ||||
|                                 delete snapmaticImage; | ||||
|                                 QDialog urlPasteDialog(this); | ||||
| #if QT_VERSION >= 0x050000 | ||||
|                                 urlPasteDialog.setObjectName(QStringLiteral("UrlPasteDialog")); | ||||
| #else | ||||
|                                 urlPasteDialog.setObjectName(QString::fromUtf8("UrlPasteDialog")); | ||||
| #endif | ||||
|                                 urlPasteDialog.setWindowFlags(urlPasteDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); | ||||
|                                 urlPasteDialog.setWindowTitle(tr("Import...")); | ||||
|                                 urlPasteDialog.setModal(true); | ||||
|                                 QVBoxLayout urlPasteLayout(&urlPasteDialog); | ||||
| #if QT_VERSION >= 0x050000 | ||||
|                                 urlPasteLayout.setObjectName(QStringLiteral("UrlPasteLayout")); | ||||
| #else | ||||
|                                 urlPasteLayout.setObjectName(QString::fromUtf8("UrlPasteLayout")); | ||||
| #endif | ||||
|                                 urlPasteDialog.setLayout(&urlPasteLayout); | ||||
|                                 UiModLabel urlPasteLabel(&urlPasteDialog); | ||||
| #if QT_VERSION >= 0x050000 | ||||
|                                 urlPasteLabel.setObjectName(QStringLiteral("UrlPasteLabel")); | ||||
| #else | ||||
|                                 urlPasteLabel.setObjectName(QString::fromUtf8("UrlPasteLabel")); | ||||
| #endif | ||||
| 
 | ||||
|                                 urlPasteLabel.setText(tr("Prepare Content for Import...")); | ||||
|                                 urlPasteLayout.addWidget(&urlPasteLabel); | ||||
|                                 urlPasteDialog.setFixedSize(urlPasteDialog.sizeHint()); | ||||
|                                 urlPasteDialog.show(); | ||||
| 
 | ||||
|                                 QNetworkAccessManager *netManager = new QNetworkAccessManager(); | ||||
|                                 QNetworkRequest netRequest(clipboardUrl); | ||||
|                                 netRequest.setRawHeader("User-Agent", AppEnv::getUserAgent()); | ||||
|                                 netRequest.setRawHeader("Accept", "text/html"); | ||||
|                                 netRequest.setRawHeader("Accept-Charset", "utf-8"); | ||||
|                                 netRequest.setRawHeader("Accept-Language", "en-US,en;q=0.9"); | ||||
|                                 netRequest.setRawHeader("Connection", "keep-alive"); | ||||
|                                 QNetworkReply *netReply = netManager->get(netRequest); | ||||
|                                 QEventLoop *downloadLoop = new QEventLoop(); | ||||
|                                 QObject::connect(netReply, SIGNAL(finished()), downloadLoop, SLOT(quit())); | ||||
|                                 QTimer::singleShot(30000, downloadLoop, SLOT(quit())); | ||||
|                                 downloadLoop->exec(); | ||||
|                                 downloadLoop->disconnect(); | ||||
|                                 delete downloadLoop; | ||||
| 
 | ||||
|                                 urlPasteDialog.close(); | ||||
| 
 | ||||
|                                 if (netReply->isFinished()) | ||||
|                                 { | ||||
|                                     QImage *snapmaticImage = new QImage(); | ||||
|                                     QImageReader snapmaticImageReader; | ||||
|                                     snapmaticImageReader.setDecideFormatFromContent(true); | ||||
|                                     snapmaticImageReader.setDevice(netReply); | ||||
|                                     if (snapmaticImageReader.read(snapmaticImage)) | ||||
|                                     { | ||||
|                                         importImage(snapmaticImage, QDateTime::currentDateTime()); | ||||
|                                     } | ||||
|                                     else | ||||
|                                     { | ||||
|                                         delete snapmaticImage; | ||||
|                                     } | ||||
|                                 } | ||||
|                                 else | ||||
|                                 { | ||||
|                                     netReply->abort(); | ||||
|                                 } | ||||
|                                 delete netReply; | ||||
|                                 delete netManager; | ||||
|                             } | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             netReply->abort(); | ||||
|                         } | ||||
|                         delete netReply; | ||||
|                         delete netManager; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue