not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

196 lines
5.6 KiB

// Main app class
enyo.kind({
name: "VideoViewer.App",
kind: "FittableRows",
published: {
activity: null,
filter: null
},
components: [
{name: "spinner", kind: "Image", src: "images/spinner-light.gif", classes: "mainspinner", showing: false },
{name: "cloudwarning", kind: "Image", src: "images/cloud-warning.svg", classes: "cloudwarning", showing: false },
{name: "content", kind: "Scroller", fit: true, classes: "main-content", onresize: "resize",
components: [
{name: "items", classes: "items", components: [
]}
]},
{name: "footer", classes: "viewer-footer toolbar", fit: false, components: [
{name: "previousbutton", kind: "Button", classes: "toolbutton previous-button pull-left", title:"Previous", ontap: "showPrevious", showing: false},
{name: "pagecount", content: "0/0", classes: "page-count"},
{name: "nextbutton", kind: "Button", classes: "toolbutton next-button pull-right", title:"Next", ontap: "showNext", showing: false}
]},
{name: "libraryDialog", kind: "VideoViewer.LibraryDialog", onHide: "librariesHidden"},
{name: "addLibraryDialog", kind: "VideoViewer.AddLibraryDialog"},
{name: "videoDialog", kind: "VideoViewer.VideoDialog"}
],
// Constructor
create: function() {
app = this;
this.inherited(arguments);
this.collection = [];
this.index = 0;
this.computeSize();
this.favorite = false;
document.getElementById("exportvideo-button").addEventListener("click", enyo.bind(this, "clickExportVideo"));
var that = this;
requirejs(["sugar-web/env","sugar-web/datastore"], function(env,datastore) {
env.getEnvironment(function(err, environment) {
that.$.content.applyStyle("background-color", environment.user.colorvalue.fill);
that.datastore = datastore;
});
});
},
loadLibraries: function() {
var that = this;
Util.loadLibraries(
function() {
app.showLibraries();
},
function(sender) {
that.$.spinner.setShowing(false);
that.$.cloudwarning.setShowing(true);
console.log("Error loading library on '"+sender.url+"'");
}
);
},
loadDatabase: function() {
var that = this;
this.$.spinner.setShowing(true);
Util.loadDatabase(function(response) {
that.index = 0;
that.collection = response;
that.$.spinner.setShowing(false);
that.$.cloudwarning.setShowing(false);
that.draw();
}, function(sender) {
that.$.spinner.setShowing(false);
that.$.cloudwarning.setShowing(true);
console.log("Error loading database on '"+sender.url+"'");
});
},
computeSize: function() {
var toolbar = document.getElementById("main-toolbar");
var toolbaroffset = !Util.onSugar() ? toolbar.offsetHeight : 37.5;
var canvas = document.getElementById("body");
var canvas_height = canvas.offsetHeight;
this.$.content.applyStyle("height", (canvas_height-(toolbaroffset*2))+"px");
},
resize: function() {
if (!Util.onSugar()) {
this.computeSize();
this.draw();
}
},
// Draw screen
draw: function() {
// Remove items
var items = [];
enyo.forEach(this.$.items.getControls(), function(item) { items.push(item); });
for (var i = 0 ; i < items.length ; i++) { items[i].destroy(); }
// Display items
var collection = this.collection;
var len = collection.length;
var exportButton = document.getElementById("exportvideo-button");
for(var i = 0 ; i < constant.pageCount && this.index+i < len ; i++ ) {
this.$.items.createComponent(
{
kind: "VideoViewer.Item",
code: collection[this.index+i].id,
title: collection[this.index+i].title,
category: collection[this.index+i].category,
isFavorite: Util.getFavorite(collection[this.index+i].id),
image: collection[this.index+i].image,
onVideoPlayed: "showVideo",
tojournal: exportButton.classList.contains("active")
},
{ owner: this }
).render();
}
// Display button
this.$.previousbutton.setShowing(this.index-constant.pageCount >= 0);
var currentPage = (len?1:0)+Math.ceil(this.index/constant.pageCount);
var lastPage = Math.ceil(len/constant.pageCount);
this.$.pagecount.setContent(currentPage+"/"+lastPage);
this.$.nextbutton.setShowing(currentPage < lastPage);
},
putItemsJournalModeTo: function(tojournal) {
if (tojournal) {
document.getElementById("exportvideo-button").classList.add("active");
} else {
document.getElementById("exportvideo-button").classList.remove("active");
}
enyo.forEach(this.$.items.getControls(), function(item) {
item.tojournal = tojournal;
item.tojournalChanged();
});
},
// Page event
showPrevious: function() {
this.index -= constant.pageCount;
this.saveContext();
this.draw();
},
showNext: function() {
this.index += constant.pageCount;
this.saveContext();
this.draw();
},
showVideo: function(item) {
if (item.tojournal) {
this.putItemsJournalModeTo(false);
return;
}
this.$.videoDialog.show();
this.$.videoDialog.setItem(item);
},
showLibraries: function() {
this.$.libraryDialog.reload();
this.$.libraryDialog.show();
},
hideLibraries: function() {
this.$.libraryDialog.hide();
},
librariesHidden: function() {
if (Util.getLibrary() == null)
this.showLibraries();
},
setFilter: function(filter) {
Util.setFilter(filter);
},
filterChanged: function(index) {
this.collection = Util.getCollection();
this.index = (index !== undefined ? index : 0);
this.saveContext();
this.draw();
},
clickExportVideo: function() {
var exportButton = document.getElementById("exportvideo-button");
var tojournal;
tojournal = !exportButton.classList.contains("active");
this.putItemsJournalModeTo(tojournal);
},
saveContext: function() {
Util.setIndex(this.index);
Util.saveContext();
}
});