/*
* pettanR system.js
- * version 0.4.33
+ * version 0.4.35
*
* author:
* itozyun
var _uid, _data, _access;
if( typeof UIDorFILEorFILEDATA === 'number'){
- _data = FILEDATA_RESITER[ UIDorFILEorFILEDATA] || null;
+ _data = FILEDATA_RESITER[ UIDorFILEorFILEDATA ] || null;
} else
if( UIDorFILEorFILEDATA instanceof FileClass){
_uid = UIDorFILEorFILEDATA.getUID();
var _data = FILE_CONTROLER.getFileData( _file);
return _data !== null && _data.driver ? _data.driver : FileDriverBase;
},
- getUpdateFlag: function( _file, _bit){
+ getUpdateFlag: function( _file, _bit ){
var _driver = FILE_CONTROLER.getDriver( _file ),
_policy;
if( typeof _driver.getUpdatePolicy === 'function'){
removeEventListener: function( FILEorNULL, _eventType, _callback ){
var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL,
_ticket;
- for(var i=0, l = EVENT_LISTENER_REGISTER.length; i<l; ++i){
- _ticket = EVENT_LISTENER_REGISTER[i];
- if( _ticket.fileUID === _uid && _ticket.eventType === _eventType && _ticket.callBack === _callback){
- EVENT_LISTENER_REGISTER.splice( i, 1);
+ for(var i=0, l = EVENT_LISTENER_REGISTER.length; i<l; ++i ){
+ _ticket = EVENT_LISTENER_REGISTER[ i ];
+ if( _ticket.fileUID === _uid && _ticket.eventType === _eventType && _ticket.callBack === _callback ){
+ EVENT_LISTENER_REGISTER.splice( i, 1 );
_ticket.destroy();
}
}
}
};
- var FileEventTicketClass = function( UID, _eventType, _callback){
- this.fileUID = UID;
+ var FileEventTicketClass = function( _uid, _eventType, _callback ){
+ this.fileUID = _uid;
this.eventType = _eventType;
- this.callBack = _callback;
- this.destroy = function(){
- this.callBack = _callback = null;
- }
+ this.callBack = _callback;
+ this.destroy = function(){
+ delete this.fileUID;
+ delete this.eventType;
+ delete this.destroy;
+ delete this.callBack;
+ }
+ _uid = _eventType = _callback = undefined;
}
var FileEventClass = function( eventType, file, key, value){
},
read: function(){
// simpleDeepCopy
- var driver = FILE_CONTROLER.getDriver( this );
+ var driver = FILE_CONTROLER.getDriver( this ),
+ data;
if( typeof driver.read === 'function'){
- return driver.read( this );
+ data = driver.read( this );
}
- return FileDriverBase.read( this );
+ return data || FileDriverBase.read( this );
},
write: function( _newData, _onUpdateFunction ){
var driver = FILE_CONTROLER.getDriver( this );
// debug用 全てのメニューを許可
return pettanr.file.FILE_UPDATE_POLICY.DSRWC;
},
- read: function( _file ){
- var data = FILE_CONTROLER.getFileData( _file ),
- protects = pettanr.file.FILE_DATA_PROPERTY_RESERVED;
-
+ read: function( _FILEorDATA ){
+ var data,
+ protects = pettanr.file.FILE_DATA_PROPERTY_RESERVED;
+ if( _FILEorDATA instanceof FileClass ){
+ data = FILE_CONTROLER.getFileData( _FILEorDATA )
+ } else {
+ data = _FILEorDATA;
+ }
+
function clone( src ) {
var ret;
if( Type.isArray(src) === true ){
}
var BreadcrumbClass = function(){
var elmContainer,
- ELM_WRAPPER = ELM_ORIGIN_FINDER_LOCATION_ITEM.cloneNode( true),
+ ELM_WRAPPER = ELM_ORIGIN_FINDER_LOCATION_ITEM.cloneNode( true ),
ELM_FILENAME = ELM_WRAPPER.getElementsByTagName( 'a')[0],
file, w, index, instansce,
callback;
ELM_WRAPPER.onclick = onClick;
function draw(){
- ELM_FILENAME.className = 'file-icon-' +file.getType();
+ ELM_FILENAME.className = 'file-icon-' + file.getType();
ELM_FILENAME.innerHTML = file.getName();
}
function resize( index){
return { className: 'file-type-broken'};
},
getSummary: function( _file ){
- var _data = FileAPI.getFileData( _file),
+ var _data = FileAPI.getFileData( _file ),
_type = _data !== null ? _data.type : null;
if( _type === pettanr.driver.FILE_TYPE.PICTURE){
return [ _data.width, 'x', _data.height, ', filesize:', _data.filesize, ', lisence:', _data.license ].join( '' );
}
return 'pettanR unknown file';
},
+ read: function( _file ){
+ var _data = FileAPI.getFileData( _file ),
+ _type = _data !== null ? _data.type : null,
+ ret;
+ if( _type === pettanr.driver.FILE_TYPE.COMIC ){
+ // children を panels に deepcopy
+ ret = {};
+ for( var key in _data ){
+ ret[ key ] = _data[ key ]
+ }
+ ret.panels = _data.children;
+ return ret;
+ }
+ if( _type === pettanr.driver.FILE_TYPE.PANEL ){
+ }
+ if( _type === pettanr.driver.FILE_TYPE.PANEL_PICTURE ){
+
+ }
+ if( _type === pettanr.driver.FILE_TYPE.BALLOON ){
+ }
+ if( _type === pettanr.driver.FILE_TYPE.PICTURE ){
+ }
+ },
write: function( _file, _newData, _onUpdateFunction ){
var _data = FileAPI.getFileData( _file ),
_type = _data !== null ? _data.type : null;
viewerApplicationList: function( _file ){
var _data = FileAPI.getFileData( _file ),
_type = _data !== null ? _data.type : null;
-
+ if( _type === pettanr.driver.FILE_TYPE.PANEL ){
+ return [ pettanr.reader ];
+ }
+ if( _type === pettanr.driver.FILE_TYPE.COMIC ){
+ return [ pettanr.reader ];
+ }
if( _data === FILE_DATA_MY_PICTURES_ROOT ){
return [ pettanr.premiumSatge ];
}
// よくない! 一時的な処理,,,
//var tree = pettanr.driver.createPictureTree();
//tree.addTreeEventListener( pettanr.file.TREE_EVENT.UPDATE, drawIcons );
-
+ // pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES
delete instance.init;
}
this.onOpen = function( _windowW, _windowH, _ARTISTIDorFILE, _onUpdateFunction ){
}
});
+
+pettanr.reader = pettanr.view.registerApplication( function(){
+ var jqWrap, jqPanelContainer,
+ windowW, windowH,
+ headerH = pettanr.util.getElementSize( document.getElementById( 'comic-reader-header' ) ).height,
+ consoleH = pettanr.util.getElementSize( document.getElementById( 'comic-reader-console' ) ).height,
+ panelMargin,
+ elmContainer = document.getElementById( 'comic-reader-panel-container' ),
+ elmTitle = document.getElementById( 'comic-reader-title' ).firstChild,
+ elmAuthor = document.getElementById( 'comic-reader-author' ).firstChild,
+ elmBackButton = document.getElementById( 'comic-reader-back-button' ),
+ elmNextButton = document.getElementById( 'comic-reader-forward-button' ),
+ ID = 'comicReader',
+ bindWorker = null,
+ currentFile = null;
+ comicData = null,
+ currentPanel = null,
+ currentIndex = 0,
+ numPanel = 0,
+ instance = this;
+
+ function onBackClick(){
+ currentIndex -= ( currentIndex > 0 ? 1 : 0 );
+ slide();
+ return false;
+ }
+ function onNextClick(){
+ currentIndex += ( currentIndex < numPanel - 1 ? 1 : 0 );
+ slide();
+ return false;
+ }
+ function slide(){
+ var elm = elmContainer.childNodes[ currentIndex ],
+ h = windowH - headerH - consoleH,
+ top = headerH;
+ if( elm ){
+ top = headerH - elm.offsetTop + Math.floor( ( h - elm.offsetHeight ) / 2 );
+ }
+
+ jqPanelContainer.stop().animate( {
+ top: top
+ });
+ }
+ function getCurrentTopPosition(){
+
+ }
+ function draw(){
+ var fileData, title, author;
+
+ if( pettanr.driver.isPettanrFileInstance( currentFile ) === true ){
+ if( currentFile.getType() === pettanr.driver.FILE_TYPE.COMIC ){
+ fileData = currentFile.read();
+ title = fileData.title;
+ author = fileData.author.name;
+ comicData = fileData;
+ numPanel = currentFile.getChildFileLength();
+ } else
+ if( currentFile.getType() === pettanr.driver.FILE_TYPE.PANEL ){
+ fileData = currentFile.read();
+ title = fileData.comic.title;
+ author = fileData.comic.author.name;
+ comicData = fileData;
+ numPanel = 1;
+ }
+ } else {
+
+ }
+
+ if( comicData !== null ){
+ elmTitle.data = title;
+ elmAuthor.data = author;
+ bindWorker.json( comicData );
+ window.setTimeout( asyncResize, 0 );
+ }
+ }
+ function asyncResize(){
+ instance.onPaneResize( windowW, windowH );
+ }
+
+ /* grobal method */
+ // this.rootElement = elmWrap;
+ this.displayName = ID;
+ this.ID = ID;
+ this.rootElement = document.getElementById( 'comic-reader-wrapper' );
+ this.MIN_WIDTH = 320;
+ this.MIN_HEIGHT = 320;
+ this.init = function(){
+ jqWrap = $( instance.rootElement );
+ jqPanelContainer = $( elmContainer );
+
+ elmBackButton.onclick = onBackClick;
+ elmNextButton.onclick = onNextClick;
+
+ bindWorker = pettanr.bind.createBindWorker( elmContainer, null, false, false );
+
+ delete instance.init;
+ }
+ this.onOpen = function( _w, _h, _file ){
+ instance.init && instance.init();
+ numPanel = currentIndex = 0;
+
+ jqWrap.show();
+ jqPanelContainer.css({
+ left: _w / 2,
+ top: _h
+ });
+ windowW = _w;
+ windowH = _h;
+ if( pettanr.file.isFileInstance( _file ) === true ){
+ currentFile = _file;
+ _file.addEventListener( pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES, draw );
+ draw();
+ }
+ }
+ this.onPaneResize = function( _windowW, _windowH ){
+ windowW = _windowW;
+ windowH = _windowH;
+ var panelH = elmContainer.offsetHeight,
+ panelW = elmContainer.offsetWidth,
+ h = _windowH - headerH - consoleH;
+ jqPanelContainer.stop().animate(
+ {
+ left: Math.floor( ( _windowW - panelW ) / 2 ),
+ top: headerH + ( panelH < h ? Math.floor( ( h - panelH ) / 2 ) : 0 )
+ }
+ );
+ }
+ this.onClose = function(){
+ jqWrap.hide();
+ currentFile.addEventListener( pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES, draw );
+ currentFile = comicData = currentPanel = null;
+ }
+});
+
// i18n
// login
// lib