From 57004c61c723d50f2550570737f43a0e28226d64 Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Wed, 3 Jun 2015 14:29:39 -0700 Subject: [PATCH] Fixed snapshot bug. Snapshots now save and load ok --- interface/src/Application.cpp | 13 ++++--- interface/src/MainWindow.cpp | 21 ++++++++++ interface/src/MainWindow.h | 2 + interface/src/ui/Snapshot.cpp | 73 +++++++++++++++++++---------------- interface/src/ui/Snapshot.h | 14 ++----- 5 files changed, 73 insertions(+), 50 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 803955f02c..9beb8e7867 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1696,12 +1696,9 @@ bool Application::acceptSnapshot(const QString& urlString) { SnapshotMetaData* snapshotData = Snapshot::parseSnapshotData(snapshotPath); if (snapshotData) { - if (!snapshotData->getDomain().isEmpty()) { - DependencyManager::get()->getDomainHandler().setHostnameAndPort(snapshotData->getDomain()); - } - - _myAvatar->setPosition(snapshotData->getLocation()); - _myAvatar->setOrientation(snapshotData->getOrientation()); + if (!snapshotData->getURL().toString().isEmpty()) { + DependencyManager::get()->handleLookupString(snapshotData->getURL().toString()); + } } else { QMessageBox msgBox; msgBox.setText("No location details were found in the file " @@ -3452,6 +3449,10 @@ void Application::displaySide(Camera& theCamera, bool selfAvatarOnly, bool billb Glower glower; // Sets alpha to 1.0 _overlays.renderWorld(true); } + + + + activeRenderingThread = nullptr; } diff --git a/interface/src/MainWindow.cpp b/interface/src/MainWindow.cpp index f60716dc48..b1522d7cbd 100644 --- a/interface/src/MainWindow.cpp +++ b/interface/src/MainWindow.cpp @@ -17,6 +17,9 @@ #include #include #include +#include +#include +#include #include "MainWindow.h" #include "Menu.h" @@ -27,6 +30,7 @@ MainWindow::MainWindow(QWidget* parent) : _windowGeometry("WindowGeometry"), _windowState("WindowState", 0) { + setAcceptDrops(true); } void MainWindow::restoreGeometry() { @@ -106,3 +110,20 @@ void MainWindow::changeEvent(QEvent* event) { } QMainWindow::changeEvent(event); } + +void MainWindow::dragEnterEvent(QDragEnterEvent* event) +{ + if (event->mimeData()) + event->acceptProposedAction(); +} + +void MainWindow::dropEvent(QDropEvent* event) +{ + /*QList urls = event->mimeData()->urls(); + foreach(QUrl url, urls) + { + qDebug() << "urlmessage" << url.toString(); + }*/ + + QCoreApplication::sendEvent(QCoreApplication::instance(), event); +} diff --git a/interface/src/MainWindow.h b/interface/src/MainWindow.h index c6faf8e01a..6ebd19b2a9 100644 --- a/interface/src/MainWindow.h +++ b/interface/src/MainWindow.h @@ -36,6 +36,8 @@ protected: virtual void showEvent(QShowEvent* event); virtual void hideEvent(QHideEvent* event); virtual void changeEvent(QEvent* event); + virtual void dragEnterEvent(QDragEnterEvent *e); + virtual void dropEvent(QDropEvent *e); private: Setting::Handle _windowGeometry; diff --git a/interface/src/ui/Snapshot.cpp b/interface/src/ui/Snapshot.cpp index 0d91f4e7ba..1fcd1c7d16 100644 --- a/interface/src/ui/Snapshot.cpp +++ b/interface/src/ui/Snapshot.cpp @@ -15,8 +15,10 @@ #include #include #include +#include #include +#include #include #include #include @@ -28,7 +30,7 @@ // filename format: hifi-snap-by-%username%-on-%date%_%time%_@-%location%.jpg // %1 <= username, %2 <= date and time, %3 <= current location -const QString FILENAME_PATH_FORMAT = "hifi-snap-by-%1-on-%2@%3.jpg"; +const QString FILENAME_PATH_FORMAT = "hifi-snap-by-%1-on-%2.jpg"; const QString DATETIME_FORMAT = "yyyy-MM-dd_hh-mm-ss"; const QString SNAPSHOTS_DIRECTORY = "Snapshots"; @@ -42,8 +44,12 @@ const QString ORIENTATION_Y = "orientation-y"; const QString ORIENTATION_Z = "orientation-z"; const QString ORIENTATION_W = "orientation-w"; +const QString PATH = "path"; + const QString DOMAIN_KEY = "domain"; +const QString URL = "url"; + Setting::Handle Snapshot::snapshotsLocation("snapshotsLocation", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)); @@ -56,22 +62,16 @@ SnapshotMetaData* Snapshot::parseSnapshotData(QString snapshotPath) { QImage shot(snapshotPath); // no location data stored - if (shot.text(LOCATION_X).isEmpty() || shot.text(LOCATION_Y).isEmpty() || shot.text(LOCATION_Z).isEmpty()) { + if (shot.text(URL).isEmpty()) { return NULL; } + + // parsing URL + QUrl url = QUrl(shot.text(URL), QUrl::ParsingMode::StrictMode); SnapshotMetaData* data = new SnapshotMetaData(); - data->setLocation(glm::vec3(shot.text(LOCATION_X).toFloat(), - shot.text(LOCATION_Y).toFloat(), - shot.text(LOCATION_Z).toFloat())); - - data->setOrientation(glm::quat(shot.text(ORIENTATION_W).toFloat(), - shot.text(ORIENTATION_X).toFloat(), - shot.text(ORIENTATION_Y).toFloat(), - shot.text(ORIENTATION_Z).toFloat())); - - data->setDomain(shot.text(DOMAIN_KEY)); - + data->setURL(url); + return data; } @@ -82,7 +82,7 @@ QString Snapshot::saveSnapshot(QImage image) { snapshotFile->close(); QString snapshotPath = QFileInfo(*snapshotFile).absoluteFilePath(); - + delete snapshotFile; return snapshotPath; @@ -90,29 +90,35 @@ QString Snapshot::saveSnapshot(QImage image) { QTemporaryFile* Snapshot::saveTempSnapshot(QImage image) { // return whatever we get back from saved file for snapshot - return static_cast(savedFileForSnapshot(image, true));; + return static_cast(savedFileForSnapshot(image, true)); } QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary) { - Avatar* avatar = DependencyManager::get()->getMyAvatar(); - - glm::vec3 location = avatar->getPosition(); - glm::quat orientation = avatar->getHead()->getOrientation(); - - // add metadata - shot.setText(LOCATION_X, QString::number(location.x)); - shot.setText(LOCATION_Y, QString::number(location.y)); - shot.setText(LOCATION_Z, QString::number(location.z)); - - shot.setText(ORIENTATION_X, QString::number(orientation.x)); - shot.setText(ORIENTATION_Y, QString::number(orientation.y)); - shot.setText(ORIENTATION_Z, QString::number(orientation.z)); - shot.setText(ORIENTATION_W, QString::number(orientation.w)); - - shot.setText(DOMAIN_KEY, DependencyManager::get()->getDomainHandler().getHostname()); + //Avatar* avatar = DependencyManager::get()->getMyAvatar(); + // + //glm::vec3 location = avatar->getPosition(); + //glm::quat orientation = avatar->getHead()->getOrientation(); + // + //// add metadata + //shot.setText(LOCATION_X, QString::number(location.x)); + //shot.setText(LOCATION_Y, QString::number(location.y)); + //shot.setText(LOCATION_Z, QString::number(location.z)); + // + //shot.setText(ORIENTATION_X, QString::number(orientation.x)); + //shot.setText(ORIENTATION_Y, QString::number(orientation.y)); + //shot.setText(ORIENTATION_Z, QString::number(orientation.z)); + //shot.setText(ORIENTATION_W, QString::number(orientation.w)); + // + //shot.setText(DOMAIN_KEY, DependencyManager::get()->getDomainHandler().getHostname()); + // + //shot.setText(PATH, QString::number()); - QString formattedLocation = QString("%1_%2_%3").arg(location.x).arg(location.y).arg(location.z); + // adding URL to snapshot + QUrl currentURL = DependencyManager::get()->currentAddress(); + shot.setText(URL, currentURL.toString()); + + QString formattedLocation = QString(currentURL.toString()); // replace decimal . with '-' formattedLocation.replace('.', '-'); @@ -122,7 +128,7 @@ QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary) { QDateTime now = QDateTime::currentDateTime(); - QString filename = FILENAME_PATH_FORMAT.arg(username, now.toString(DATETIME_FORMAT), formattedLocation); + QString filename = FILENAME_PATH_FORMAT.arg(username, now.toString(DATETIME_FORMAT)); const int IMAGE_QUALITY = 100; @@ -136,6 +142,7 @@ QFile* Snapshot::savedFileForSnapshot(QImage & shot, bool isTemporary) { snapshotFullPath.append(filename); QFile* imageFile = new QFile(snapshotFullPath); + std::string str = snapshotFullPath.toStdString(); imageFile->open(QIODevice::WriteOnly); shot.save(imageFile, 0, IMAGE_QUALITY); diff --git a/interface/src/ui/Snapshot.h b/interface/src/ui/Snapshot.h index e83f8b3ec4..52beffdf6a 100644 --- a/interface/src/ui/Snapshot.h +++ b/interface/src/ui/Snapshot.h @@ -25,19 +25,11 @@ class QTemporaryFile; class SnapshotMetaData { public: - QString getDomain() { return _domain; } - void setDomain(QString domain) { _domain = domain; } - - glm::vec3 getLocation() { return _location; } - void setLocation(glm::vec3 location) { _location = location; } - - glm::quat getOrientation() { return _orientation; } - void setOrientation(glm::quat orientation) { _orientation = orientation; } + QUrl getURL() { return _URL; } + void setURL(QUrl URL) { _URL = URL; } private: - QString _domain; - glm::vec3 _location; - glm::quat _orientation;; + QUrl _URL; }; class Snapshot {