mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
126 lines
4.2 KiB
JavaScript
126 lines
4.2 KiB
JavaScript
(function () {
|
|
var ns = $.namespace('pskl.controller.settings');
|
|
|
|
ns.ImportController = function (piskelController) {
|
|
this.piskelController = piskelController;
|
|
};
|
|
|
|
pskl.utils.inherit(ns.ImportController, pskl.controller.settings.AbstractSettingController);
|
|
|
|
ns.ImportController.prototype.init = function () {
|
|
this.hiddenFileInput = document.querySelector('[name="file-upload-input"]');
|
|
this.addEventListener(this.hiddenFileInput, 'change', this.onFileUploadChange_);
|
|
|
|
this.hiddenOpenPiskelInput = document.querySelector('[name="open-piskel-input"]');
|
|
|
|
this.addEventListener('.browse-local-button', 'click', this.onBrowseLocalClick_);
|
|
this.addEventListener('.file-input-button', 'click', this.onFileInputClick_);
|
|
|
|
// different handlers, depending on the Environment
|
|
if (pskl.utils.Environment.detectNodeWebkit()) {
|
|
this.addEventListener('.open-piskel-button', 'click', this.openPiskelDesktop_);
|
|
} else {
|
|
this.addEventListener(this.hiddenOpenPiskelInput, 'change', this.onOpenPiskelChange_);
|
|
this.addEventListener('.open-piskel-button', 'click', this.onOpenPiskelClick_);
|
|
}
|
|
|
|
this.initRestoreSession_();
|
|
};
|
|
|
|
ns.ImportController.prototype.initRestoreSession_ = function () {
|
|
var previousSessionContainer = document.querySelector('.previous-session');
|
|
var previousInfo = pskl.app.backupService.getPreviousPiskelInfo();
|
|
if (previousInfo) {
|
|
var previousSessionTemplate_ = pskl.utils.Template.get('previous-session-info-template');
|
|
var date = pskl.utils.DateUtils.format(previousInfo.date, '{{H}}:{{m}} - {{Y}}/{{M}}/{{D}}');
|
|
previousSessionContainer.innerHTML = pskl.utils.Template.replace(previousSessionTemplate_, {
|
|
name : previousInfo.name,
|
|
date : date
|
|
});
|
|
this.addEventListener('.restore-session-button', 'click', this.onRestorePreviousSessionClick_);
|
|
} else {
|
|
previousSessionContainer.innerHTML = 'No piskel backup was found on this browser.';
|
|
}
|
|
};
|
|
|
|
ns.ImportController.prototype.closeDrawer_ = function () {
|
|
$.publish(Events.CLOSE_SETTINGS_DRAWER);
|
|
};
|
|
ns.ImportController.prototype.onFileUploadChange_ = function (evt) {
|
|
this.importPictureFromFile_();
|
|
};
|
|
|
|
ns.ImportController.prototype.onFileInputClick_ = function (evt) {
|
|
this.hiddenFileInput.click();
|
|
};
|
|
|
|
ns.ImportController.prototype.onOpenPiskelChange_ = function (evt) {
|
|
var files = this.hiddenOpenPiskelInput.files;
|
|
if (files.length == 1) {
|
|
this.openPiskelFile_(files[0]);
|
|
}
|
|
};
|
|
|
|
ns.ImportController.prototype.openPiskelDesktop_ = function (evt) {
|
|
this.closeDrawer_();
|
|
pskl.app.desktopStorageService.openPiskel();
|
|
};
|
|
|
|
ns.ImportController.prototype.onOpenPiskelClick_ = function (evt) {
|
|
this.hiddenOpenPiskelInput.click();
|
|
};
|
|
|
|
ns.ImportController.prototype.onBrowseLocalClick_ = function (evt) {
|
|
$.publish(Events.DIALOG_SHOW, {
|
|
dialogId : 'browse-local'
|
|
});
|
|
this.closeDrawer_();
|
|
};
|
|
|
|
ns.ImportController.prototype.openPiskelFile_ = function (file) {
|
|
if (this.isPiskel_(file)) {
|
|
$.publish(Events.DIALOG_SHOW, {
|
|
dialogId : 'import',
|
|
initArgs : {
|
|
rawFiles: [file]
|
|
}
|
|
});
|
|
this.closeDrawer_();
|
|
} else {
|
|
this.closeDrawer_();
|
|
console.error('The selected file is not a piskel file');
|
|
}
|
|
};
|
|
|
|
ns.ImportController.prototype.importPictureFromFile_ = function () {
|
|
var files = this.hiddenFileInput.files;
|
|
// TODO : Simply filter and remove stuff
|
|
var areImages = Array.prototype.every.call(files, function (file) {
|
|
return file.type.indexOf('image') === 0;
|
|
});
|
|
if (areImages) {
|
|
$.publish(Events.DIALOG_SHOW, {
|
|
dialogId : 'import',
|
|
initArgs : {
|
|
rawFiles: files
|
|
}
|
|
});
|
|
this.closeDrawer_();
|
|
} else {
|
|
this.closeDrawer_();
|
|
console.error('Some files are not images');
|
|
}
|
|
};
|
|
|
|
ns.ImportController.prototype.isPiskel_ = function (file) {
|
|
return (/\.piskel$/).test(file.name);
|
|
};
|
|
|
|
ns.ImportController.prototype.onRestorePreviousSessionClick_ = function () {
|
|
if (window.confirm('This will erase your current workspace. Continue ?')) {
|
|
pskl.app.backupService.load();
|
|
$.publish(Events.CLOSE_SETTINGS_DRAWER);
|
|
}
|
|
};
|
|
})();
|