added snapshot notification in desktop mode

This commit is contained in:
SamGondelman 2016-07-05 17:21:57 -07:00
parent 218b26b521
commit 04184ee1fb
3 changed files with 53 additions and 35 deletions

View file

@ -4988,7 +4988,9 @@ void Application::takeSnapshot() {
player->setMedia(QUrl::fromLocalFile(inf.absoluteFilePath()));
player->play();
Snapshot::saveSnapshot(getActiveDisplayPlugin()->getScreenshot());
QString path = Snapshot::saveSnapshot(getActiveDisplayPlugin()->getScreenshot());
emit DependencyManager::get<WindowScriptingInterface>()->snapshotTaken(path);
}
float Application::getRenderResolutionScale() const {

View file

@ -46,6 +46,7 @@ signals:
void domainChanged(const QString& domainHostname);
void svoImportRequested(const QString& url);
void domainConnectionRefused(const QString& reasonMessage, int reasonCode);
void snapshotTaken(const QString& path);
private slots:
WebWindowClass* doCreateWebWindow(const QString& title, const QString& url, int width, int height);

View file

@ -49,10 +49,10 @@
// 2. Declare a text string.
// 3. Call createNotifications(text, NotificationType) parsing the text.
// example:
// if (key.text === "s") {
// if (key.text === "o") {
// if (ctrlIsPressed === true) {
// noteString = "Snapshot taken.";
// createNotification(noteString, NotificationType.SNAPSHOT);
// noteString = "Open script";
// createNotification(noteString, NotificationType.OPEN_SCRIPT);
// }
// }
@ -233,8 +233,9 @@ function calculate3DOverlayPositions(noticeWidth, noticeHeight, y) {
// Pushes data to each array and sets up data for 2nd dimension array
// to handle auxiliary data not carried by the overlay class
// specifically notification "heights", "times" of creation, and .
function notify(notice, button, height) {
var noticeWidth,
function notify(notice, button, height, imageProperties, image) {
var notificationText,
noticeWidth,
noticeHeight,
positions,
last;
@ -269,9 +270,13 @@ function notify(notice, button, height) {
height: noticeHeight
});
} else {
var notificationText = Overlays.addOverlay("text", notice);
notifications.push((notificationText));
buttons.push((Overlays.addOverlay("image", button)));
if (!image) {
notificationText = Overlays.addOverlay("text", notice);
notifications.push((notificationText));
} else {
notifications.push(Overlays.addOverlay("image", notice));
}
buttons.push(Overlays.addOverlay("image", button));
}
height = height + 1.0;
@ -281,11 +286,24 @@ function notify(notice, button, height) {
last = notifications.length - 1;
createArrays(notifications[last], buttons[last], times[last], heights[last], myAlpha[last]);
fadeIn(notifications[last], buttons[last]);
if (imageProperties && !image) {
var imageHeight = notice.width / imageProperties.aspectRatio;
notice = {
x: notice.x,
y: notice.y + height,
width: notice.width,
height: imageHeight,
imageURL: imageProperties.path
};
notify(notice, button, imageHeight, imageProperties, true);
}
return notificationText;
}
// This function creates and sizes the overlays
function createNotification(text, notificationType) {
function createNotification(text, notificationType, imageProperties) {
var count = (text.match(/\n/g) || []).length,
breakPoint = 43.0, // length when new line is added
extraLine = 0,
@ -308,6 +326,11 @@ function createNotification(text, notificationType) {
level = (stack + 20.0);
height = height + extraLine;
if (imageProperties && imageProperties.path) {
imageProperties.path = Script.resolvePath(imageProperties.path);
}
noticeProperties = {
x: overlayLocationX,
y: level,
@ -336,12 +359,11 @@ function createNotification(text, notificationType) {
};
if (Menu.isOptionChecked(PLAY_NOTIFICATION_SOUNDS_MENU_ITEM) &&
Menu.isOptionChecked(NotificationType.getMenuString(notificationType)))
{
Menu.isOptionChecked(NotificationType.getMenuString(notificationType))) {
randomSounds.playRandom();
}
return notify(noticeProperties, buttonProperties, height);
return notify(noticeProperties, buttonProperties, height, imageProperties);
}
function deleteNotification(index) {
@ -362,21 +384,12 @@ function deleteNotification(index) {
// wraps whole word to newline
function stringDivider(str, slotWidth, spaceReplacer) {
var p,
left,
right;
var left, right;
if (str.length > slotWidth) {
p = slotWidth;
while (p > 0 && str[p] !== ' ') {
p -= 1;
}
if (p > 0) {
left = str.substring(0, p);
right = str.substring(p + 1);
return left + spaceReplacer + stringDivider(right, slotWidth, spaceReplacer);
}
if (str.length > slotWidth && slotWidth > 0) {
left = str.substring(0, slotWidth);
right = str.substring(slotWidth + 1);
return left + spaceReplacer + stringDivider(right, slotWidth, spaceReplacer);
}
return str;
}
@ -504,7 +517,15 @@ function onMuteStateChanged() {
}
function onDomainConnectionRefused(reason) {
createNotification("Connection refused: " + reason, NotificationType.CONNECTION_REFUSED );
createNotification("Connection refused: " + reason, NotificationType.CONNECTION_REFUSED);
}
function onSnapshotTaken(path) {
var imageProperties = {
path: path,
aspectRatio: Window.innerWidth / Window.innerHeight
}
createNotification(wordWrap("Snapshot saved to " + path), NotificationType.SNAPSHOT, imageProperties);
}
// handles mouse clicks on buttons
@ -541,13 +562,6 @@ function keyPressEvent(key) {
if (key.key === 16777249) {
ctrlIsPressed = true;
}
if (key.text === "s") {
if (ctrlIsPressed === true) {
noteString = "Snapshot taken.";
createNotification(noteString, NotificationType.SNAPSHOT);
}
}
}
function setup() {
@ -615,5 +629,6 @@ Script.update.connect(update);
Script.scriptEnding.connect(scriptEnding);
Menu.menuItemEvent.connect(menuItemEvent);
Window.domainConnectionRefused.connect(onDomainConnectionRefused);
Window.snapshotTaken.connect(onSnapshotTaken);
setup();