mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 00:56:48 +02:00
commit
8de7bfe55e
8 changed files with 123 additions and 10 deletions
BIN
interface/resources/sounds/snap.wav
Normal file
BIN
interface/resources/sounds/snap.wav
Normal file
Binary file not shown.
|
@ -47,6 +47,7 @@
|
|||
#include <QDesktopServices>
|
||||
#include <QXmlStreamReader>
|
||||
#include <QXmlStreamAttributes>
|
||||
#include <QMediaPlayer>
|
||||
|
||||
#include <AudioInjector.h>
|
||||
#include <NodeTypes.h>
|
||||
|
@ -70,6 +71,7 @@
|
|||
#include "renderer/ProgramObject.h"
|
||||
#include "ui/TextRenderer.h"
|
||||
#include "InfoView.h"
|
||||
#include "ui/Snapshot.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -773,6 +775,8 @@ void Application::keyPressEvent(QKeyEvent* event) {
|
|||
_voxels.collectStatsForTreesAndVBOs();
|
||||
} else if (isShifted && isMeta) {
|
||||
Menu::getInstance()->triggerOption(MenuOption::SuppressShortTimings);
|
||||
} else if (!isShifted && isMeta) {
|
||||
takeSnapshot();
|
||||
} else if (_nudgeStarted) {
|
||||
if (_lookingAlongX) {
|
||||
if (_lookingAwayFromOrigin) {
|
||||
|
@ -4341,3 +4345,14 @@ void Application::skipVersion(QString latestVersion) {
|
|||
skipFile.seek(0);
|
||||
skipFile.write(latestVersion.toStdString().c_str());
|
||||
}
|
||||
|
||||
void Application::takeSnapshot() {
|
||||
switchToResourcesParentIfRequired();
|
||||
QMediaPlayer* player = new QMediaPlayer();
|
||||
QFileInfo inf = QFileInfo("resources/sounds/snap.wav");
|
||||
player->setMedia(QUrl::fromLocalFile(inf.absoluteFilePath()));
|
||||
player->play();
|
||||
|
||||
Snapshot::saveSnapshot(_glWidget, _profile.getUsername(), _myAvatar.getPosition());
|
||||
}
|
||||
|
||||
|
|
|
@ -505,6 +505,7 @@ private:
|
|||
void checkVersion();
|
||||
void displayUpdateDialog();
|
||||
bool shouldSkipVersion(QString latestVersion);
|
||||
void takeSnapshot();
|
||||
};
|
||||
|
||||
#endif /* defined(__interface__Application__) */
|
||||
|
|
|
@ -14,17 +14,17 @@
|
|||
#include <QDir>
|
||||
#include <QDesktopServices>
|
||||
|
||||
const QString FILENAME_FORMAT = "hifi-log_%1_%2.txt";
|
||||
const QString DATETIME_FORMAT = "yyyy-MM-dd_hh.mm.ss";
|
||||
const QString LOGS_DIRECTORY = "Logs";
|
||||
|
||||
FileLogger::FileLogger() : _logData(NULL) {
|
||||
setExtraDebugging(false);
|
||||
_fileName = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
|
||||
QDir logDir(_fileName);
|
||||
if (!logDir.exists(_fileName)) {
|
||||
logDir.mkdir(_fileName);
|
||||
}
|
||||
|
||||
_fileName = FileUtils::standardPath(LOGS_DIRECTORY);
|
||||
QHostAddress clientAddress = QHostAddress(getHostOrderLocalAddress());
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
_fileName.append(QString("/hifi-log_%1_%2.txt").arg(clientAddress.toString(), now.toString("yyyy-MM-dd_hh.mm.ss")));
|
||||
_fileName.append(QString(FILENAME_FORMAT).arg(clientAddress.toString(), now.toString(DATETIME_FORMAT)));
|
||||
}
|
||||
|
||||
void FileLogger::addMessage(QString message) {
|
||||
|
@ -40,5 +40,5 @@ void FileLogger::addMessage(QString message) {
|
|||
}
|
||||
|
||||
void FileLogger::locateLog() {
|
||||
FileUtils::LocateFile(_fileName);
|
||||
FileUtils::locateFile(_fileName);
|
||||
}
|
||||
|
|
46
interface/src/ui/Snapshot.cpp
Normal file
46
interface/src/ui/Snapshot.cpp
Normal file
|
@ -0,0 +1,46 @@
|
|||
//
|
||||
// Snapshot.cpp
|
||||
// hifi
|
||||
//
|
||||
// Created by Stojce Slavkovski on 1/26/14.
|
||||
//
|
||||
//
|
||||
|
||||
#include "Snapshot.h"
|
||||
|
||||
#include <FileUtils.h>
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QFileInfo>
|
||||
#include <QDebug>
|
||||
|
||||
// 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 DATETIME_FORMAT = "yyyy-MM-dd_hh-mm-ss";
|
||||
const QString SNAPSHOTS_DIRECTORY = "Snapshots";
|
||||
|
||||
void Snapshot::saveSnapshot(QGLWidget* widget, QString username, glm::vec3 location) {
|
||||
QImage shot = widget->grabFrameBuffer();
|
||||
|
||||
// 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));
|
||||
|
||||
QString formattedLocation = QString("%1_%2_%3").arg(location.x).arg(location.y).arg(location.z);
|
||||
// replace decimal . with '-'
|
||||
formattedLocation.replace('.', '-');
|
||||
|
||||
// normalize username, replace all non alphanumeric with '-'
|
||||
username.replace(QRegExp("[^A-Za-z0-9_]"), "-");
|
||||
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
|
||||
QString fileName = FileUtils::standardPath(SNAPSHOTS_DIRECTORY);
|
||||
fileName.append(QString(FILENAME_PATH_FORMAT.arg(username, now.toString(DATETIME_FORMAT), formattedLocation)));
|
||||
shot.save(fileName, 0, 100);
|
||||
}
|
||||
|
||||
|
27
interface/src/ui/Snapshot.h
Normal file
27
interface/src/ui/Snapshot.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
//
|
||||
// Snapshot.h
|
||||
// hifi
|
||||
//
|
||||
// Created by Stojce Slavkovski on 1/26/14.
|
||||
// Copyright (c) 2014 High Fidelity, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef __hifi__Snapshot__
|
||||
#define __hifi__Snapshot__
|
||||
|
||||
#import <QString>
|
||||
#import <QImage>
|
||||
#import <QGLWidget>
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
class Snapshot {
|
||||
|
||||
public:
|
||||
static void saveSnapshot(QGLWidget* widget, QString username, glm::vec3 location);
|
||||
|
||||
private:
|
||||
QString _username;
|
||||
};
|
||||
|
||||
#endif /* defined(__hifi__Snapshot__) */
|
|
@ -10,9 +10,9 @@
|
|||
#include <QtCore>
|
||||
#include <QDesktopServices>
|
||||
|
||||
void FileUtils::LocateFile(QString filePath) {
|
||||
void FileUtils::locateFile(QString filePath) {
|
||||
|
||||
// adopted from
|
||||
// adapted from
|
||||
// http://stackoverflow.com/questions/3490336/how-to-reveal-in-finder-or-show-in-explorer-with-qt
|
||||
// and
|
||||
// http://lynxline.com/show-in-finder-show-in-explorer/
|
||||
|
@ -54,3 +54,26 @@ void FileUtils::LocateFile(QString filePath) {
|
|||
QDesktopServices::openUrl(QUrl::fromLocalFile(folder));
|
||||
}
|
||||
}
|
||||
|
||||
QString FileUtils::standardPath(QString subfolder) {
|
||||
// standard path
|
||||
// Mac: ~/Library/Application Support/Interface
|
||||
QString path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
|
||||
path.append("/Interface");
|
||||
|
||||
if (!subfolder.startsWith("/")) {
|
||||
subfolder.prepend("/");
|
||||
}
|
||||
|
||||
if (!subfolder.endsWith("/")) {
|
||||
subfolder.append("/");
|
||||
}
|
||||
|
||||
path.append(subfolder);
|
||||
QDir logDir(path);
|
||||
if (!logDir.exists(path)) {
|
||||
logDir.mkpath(path);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,8 @@
|
|||
class FileUtils {
|
||||
|
||||
public:
|
||||
static void LocateFile(QString);
|
||||
static void locateFile(QString fileName);
|
||||
static QString standardPath(QString subfolder);
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue