Changeset 8527


Ignore:
Timestamp:
May 25, 2009, 1:31:03 PM (12 years ago)
Author:
charles
Message:

(trunk web) revert that last change

Location:
trunk/web/javascript
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/javascript/torrent.js

    r8526 r8527  
    4141
    4242                // Create a new <li> element
    43                 var element = document.createElement( 'li' );
    44                 element.className = 'torrent';
    45                 element.id = 'torrent_' + data.id;
     43                var top_e = document.createElement( 'li' );
     44                top_e.className = 'torrent';
     45                top_e.id = 'torrent_' + data.id;
     46                var element = $(top_e);
    4647                element._torrent = this;
    4748                this._element = element;
     
    5253                var e = document.createElement( 'div' );
    5354                e.className = 'torrent_name';
    54                 element.appendChild( e );
     55                top_e.appendChild( e );
    5556                element._name_container = e;
    5657               
     
    5859                e = document.createElement( 'div' );
    5960                e.className = 'torrent_progress_details';
    60                 element.appendChild( e );
     61                top_e.appendChild( e );
    6162                element._progress_details_container = e;
    6263
     
    6566                e.className = 'torrent_progress_bar incomplete';
    6667                e.style.width = '0%';
    67                 element.appendChild( e );
     68                top_e.appendChild( e );
    6869                element._progress_complete_container = e;
    6970                       
     
    7273                e.className = 'torrent_progress_bar incomplete';
    7374                e.style.display = 'none';
    74                 element.appendChild( e );
     75                top_e.appendChild( e );
    7576                element._progress_incomplete_container = e;
    7677               
     
    8283                e = document.createElement( 'a' );
    8384                e.appendChild( image );
    84                 element.appendChild( e );
     85                top_e.appendChild( e );
    8586                element._pause_resume_button_image = image;
     87                if (!iPhone) $(e).bind('click', {element: element}, this.clickPauseResumeButton);
    8688               
    8789                // Create the 'peer details' <div>
    8890                e = document.createElement( 'div' );
    8991                e.className = 'torrent_peer_details';
    90                 element.appendChild( e );
     92                top_e.appendChild( e );
    9193                element._peer_details_container = e;
     94               
     95                // Set the torrent click observer
     96                element.bind('click', {element: element}, this.clickTorrent);
     97                if (!iPhone) element.bind('contextmenu', {element: element}, this.rightClickTorrent);           
    9298               
    9399                // Safari hack - first torrent needs to be moved down for some reason. Seems to be ok when
     
    113119               
    114120                // insert the element
    115                 transferListParent.appendChild(element);
     121                transferListParent.appendChild(top_e);
    116122        },
    117123       
     
    196202        hideFileList: function() { this.fileList().hide(); },
    197203       
     204        /*--------------------------------------------
     205         *
     206         *  E V E N T   F U N C T I O N S
     207         *
     208         *--------------------------------------------*/
     209       
     210        /*
     211         * Process a right-click event on this torrent
     212         */
     213        rightClickTorrent: function(event)
     214        {
     215                // don't stop the event! need it for the right-click menu
     216               
     217                var t = event.data.element._torrent;
     218                if ( !t.isSelected( ) )
     219                        t._controller.setSelectedTorrent( t );
     220        },
     221       
     222        /*
     223         * Process a click event on this torrent
     224         */
     225        clickTorrent: function( event )
     226        {
     227                // Prevents click carrying to parent element
     228                // which deselects all on click
     229                event.stopPropagation();
     230                var torrent = event.data.element._torrent;
     231               
     232                // 'Apple' button emulation on PC :
     233                // Need settable meta-key and ctrl-key variables for mac emulation
     234                var meta_key = event.metaKey;
     235                var ctrl_key = event.ctrlKey;
     236                if (event.ctrlKey && navigator.appVersion.toLowerCase().indexOf("mac") == -1) {
     237                        meta_key = true;
     238                        ctrl_key = false;
     239                }
     240               
     241                // Shift-Click - Highlight a range between this torrent and the last-clicked torrent
     242                if (iPhone) {
     243                        torrent._controller.setSelectedTorrent( torrent, true );
     244               
     245                } else if (event.shiftKey) {
     246                        torrent._controller.selectRange( torrent, true );
     247                        // Need to deselect any selected text
     248                        window.focus();
     249               
     250                // Apple-Click, not selected
     251                } else if (!torrent.isSelected() && meta_key) {
     252                        torrent._controller.selectTorrent( torrent, true );
     253                       
     254                // Regular Click, not selected
     255                } else if (!torrent.isSelected()) {
     256                        torrent._controller.setSelectedTorrent( torrent, true );
     257               
     258                // Apple-Click, selected       
     259                } else if (torrent.isSelected() && meta_key) {
     260                        torrent._controller.deselectTorrent( torrent, true );
     261                       
     262                // Regular Click, selected
     263                } else if (torrent.isSelected()) {
     264                        torrent._controller.setSelectedTorrent( torrent, true );
     265                }
     266               
     267                torrent._controller.setLastTorrentClicked(torrent);
     268        },
     269
     270        /*
     271         * Process a click event on the pause/resume button
     272         */
     273        clickPauseResumeButton: function( event )
     274        {
     275                // prevent click event resulting in selection of torrent
     276                event.stopPropagation();
     277
     278                // either stop or start the torrent
     279                var torrent = event.data.element._torrent;
     280                if( torrent.isActive( ) )
     281                        torrent._controller.stopTorrent( torrent );
     282                else
     283                        torrent._controller.startTorrent( torrent );
     284        },
     285
    198286        /*--------------------------------------------
    199287         *
     
    412500         */
    413501        isSelected: function() {
    414                 return this.element().className.indexOf('selected') != -1;
     502                return this.element()[0].className.indexOf('selected') != -1;
    415503        },
    416504
  • trunk/web/javascript/transmission.js

    r8526 r8527  
    6161                $('.file_wanted_control').live('click', function(e){ tr.fileWantedClicked(e, this); });
    6262                $('.file_priority_control').live('click', function(e){ tr.filePriorityClicked(e, this); });
    63                 $('.torrent_list > .torrent').live('click', function(e){ tr.torrentClicked(e, this); });
    6463                if (iPhone) {
    6564                        $('#torrent_inspector').bind('click', function(e){ tr.hideInspector(); });
    6665                        $('#preferences_link').bind('click', function(e){ tr.releaseClutchPreferencesButton(e); });
    6766                } else {
    68                         $('.torrent_resume').live('click', function(e){ tr.torrentResumeClicked(e, this); });
    69                         $('.torrent_pause').live('click', function(e){ tr.torrentPauseClicked(e, this); });
    7067                        $(document).bind('keydown',  function(e){ tr.keyDown(e); });
    71                         //$('#torrent_container').bind('click', function(e){ tr.deselectAll( true ); });
     68                        $('#torrent_container').bind('click', function(e){ tr.deselectAll( true ); });
    7269                        $('#open_link').bind('click', function(e){ tr.openTorrentClicked(e); });
    7370                        $('#filter_toggle_link').bind('click', function(e){ tr.toggleFilterClicked(e); });
     
    292289                        boundingElement:   $('div#torrent_container'),
    293290                        boundingRightPad:  20,
    294                         boundingBottomPad: 5,
    295                         onContextMenu:     function(e) {
    296                                 tr.setSelectedElement( $(e.target).closest('.torrent')[0], true );
    297                                 return true;
    298                         }
     291                        boundingBottomPad: 5
    299292                });
    300293        },
     
    331324                var torrents = [ ];
    332325                for( var i=0, row; row=this._rows[i]; ++i )
    333                         if( row._torrent && ( row.style.display != 'none' ) )
     326                        if( row._torrent && ( row[0].style.display != 'none' ) )
    334327                                torrents.push( row._torrent );
    335328                return torrents;
     
    361354                var rows = [ ];
    362355                for( var i=0, row; row=this._rows[i]; ++i )
    363                         if( row.style.display != 'none' )
     356                        if( row[0].style.display != 'none' )
    364357                                rows.push( row );
    365358                return rows;
     
    382375        scrollToElement: function( e )
    383376        {
    384                 if( !iPhone )
    385                 {
    386                         var container = $('#torrent_container');
    387                         var scrollTop = container.scrollTop( );
    388                         var innerHeight = container.innerHeight( );
    389 
    390                         var offsetTop = e.offsetTop;
    391                         var offsetHeight = $(e).outerHeight( );
    392 
    393                         if( offsetTop < scrollTop )
    394                                 container.scrollTop( offsetTop );
    395                         else if( innerHeight + scrollTop < offsetTop + offsetHeight )
    396                                 container.scrollTop( offsetTop + offsetHeight - innerHeight );
    397                 }
     377                if( iPhone )
     378                        return;
     379
     380                var container = $('#torrent_container');
     381                var scrollTop = container.scrollTop( );
     382                var innerHeight = container.innerHeight( );
     383
     384                var offsetTop = e[0].offsetTop;
     385                var offsetHeight = e.outerHeight( );
     386
     387                if( offsetTop < scrollTop )
     388                        container.scrollTop( offsetTop );
     389                else if( innerHeight + scrollTop < offsetTop + offsetHeight )
     390                        container.scrollTop( offsetTop + offsetHeight - innerHeight );
    398391        },
    399392
     
    404397         *--------------------------------------------*/
    405398
    406         setSelectedElement: function( element, doUpdate ) {
     399        setSelectedTorrent: function( torrent, doUpdate ) {
    407400                this.deselectAll( );
    408                 this.selectElement( element, doUpdate );
     401                this.selectTorrent( torrent, doUpdate );
    409402        },
    410403
    411404        selectElement: function( e, doUpdate ) {
     405                $.className.add( e[0], 'selected' );
    412406                this.scrollToElement( e );
    413                 $.className.add( e, 'selected' );
    414407                if( doUpdate )
    415408                        this.selectionChanged( );
     409                $.className.add( e[0], 'selected' );
     410        },
     411        selectRow: function( rowIndex, doUpdate ) {
     412                this.selectElement( this._rows[rowIndex], doUpdate );
     413        },
     414        selectTorrent: function( torrent, doUpdate ) {
     415                if( torrent._element )
     416                        this.selectElement( torrent._element, doUpdate );
    416417        },
    417418
    418419        deselectElement: function( e, doUpdate ) {
    419                 $.className.remove( e, 'selected' );
     420                $.className.remove( e[0], 'selected' );
    420421                if( doUpdate )
    421422                        this.selectionChanged( );
     423        },
     424        deselectTorrent: function( torrent, doUpdate ) {
     425                if( torrent._element )
     426                        this.deselectElement( torrent._element, doUpdate );
    422427        },
    423428
     
    433438                for( var i=0, row; row=tr._rows[i]; ++i )
    434439                        tr.deselectElement( row );
    435                 tr._last_element_clicked = null;
     440                tr._last_torrent_clicked = null;
    436441                if( doUpdate )
    437442                        tr.selectionChanged( );
     
    441446         * Select a range from this torrent to the last clicked torrent
    442447         */
    443         selectRange: function( element, doUpdate )
    444         {
    445                 if( !this._last_element_clicked )
    446                         this.selectElement( element );
    447                 else { // select the range between the prevous & current
    448                         var a = this._rows.indexOf( this._last_element_clicked );
    449                         var b = this._rows.indexOf( element );
    450                         var begin = a < b ? a : b;
    451                         var end = a > b ? a : b;
    452                         for( var i=begin; i<=end; ++i )
    453                                 this.selectElement( this._rows[i] );
     448        selectRange: function( torrent, doUpdate )
     449        {
     450                if( !this._last_torrent_clicked )
     451                {
     452                        this.selectTorrent( torrent );
     453                }
     454                else // select the range between the prevous & current
     455                {
     456                        var rows = this.getVisibleRows( );
     457                        var i = this.getTorrentIndex( rows, this._last_torrent_clicked );
     458                        var end = this.getTorrentIndex( rows, torrent );
     459                        var step = i < end ? 1 : -1;
     460                        for( ; i!=end; i+=step )
     461                                this.selectRow( i );
     462                        this.selectRow( i );
    454463                }
    455464
     
    495504                }
    496505
    497                 if( 0<=i && i<rows.length )
    498                         this.setSelectedElement (this._rows[i]);
     506                if( 0<=i && i<rows.length ) {
     507                        tr.deselectAll( );
     508                        tr.selectRow( i, true );
     509                }
    499510        },
    500511   
     
    639650       
    640651                this.updateVisibleFileLists();
    641         },
    642 
    643         torrentClicked: function(event, element)
    644         {
    645                 var torrent = element._torrent;
    646                 var isSelected = element.className.indexOf('selected') != -1;
    647 
    648        
    649 //console.log ('torrent clicked. meta ' + event.metaKey + ' ctrl ' + event.ctrlKey + ' shift ' + event.shiftKey );     
    650                 // 'Apple' button emulation on PC:
    651                 // TODO: Need settable meta-key and ctrl-key variables for mac emulation
    652                 var meta_key = event.metaKey;
    653                 var ctrl_key = event.ctrlKey;
    654                 if (event.ctrlKey && navigator.appVersion.toLowerCase().indexOf("mac") == -1) {
    655                         meta_key = true;
    656                         ctrl_key = false;
    657                 }
    658                
    659                 // Shift-Click - Highlight a range between this torrent and the last-clicked torrent
    660                 if (iPhone) {
    661                         this.setSelectedElement( element, true );
    662                 } else if (event.shiftKey) {
    663                         this.selectRange( element, true );
    664                         // Need to deselect any selected text
    665                         window.focus();
    666                
    667                 } else if (!isSelected && meta_key) { // Apple-Click, not selected
    668                         this.selectElement( element, true );
    669                 } else if (!isSelected) { // Regular Click, not selected
    670                         this.setSelectedElement( element, true );
    671                 } else if (isSelected && meta_key) { // Apple-Click, selected   
    672                         this.deselectElement( element, true );
    673                 } else if (isSelected) { // Regular Click, selected
    674                         this.setSelectedElement( element, true );
    675                 }
    676                
    677                 this._last_element_clicked = element;
    678 
    679                 // Prevents click carrying to parent element
    680                 // which deselects all on click
    681                 event.stopPropagation();
    682         },
    683 
    684         torrentPauseClicked: function (event, element) {
    685                 var row = element.parentNode.parentNode;
    686                 console.log ('pause clicked');
    687                 this.stopTorrent (row._torrent);
    688                 event.stopPropagation ();
    689         },
    690 
    691         torrentResumeClicked: function (event, element) {
    692                 var row = element.parentNode.parentNode;
    693                 console.log ('resume clicked');
    694                 this.startTorrent (row._torrent);
    695                 event.stopPropagation ();
    696652        },
    697653
     
    945901        },
    946902
     903        setLastTorrentClicked: function( torrent )
     904        {
     905                this._last_torrent_clicked = torrent;
     906        },
     907   
    947908        /*
    948909         * Update the inspector with the latest data for the selected torrents
     
    12891250                var rows = this.getVisibleRows( );
    12901251                for( var i=0, row; row=rows[i]; ++i ) {
    1291                         var wasEven = row.className.indexOf('even') != -1;
     1252                        var wasEven = row[0].className.indexOf('even') != -1;
    12921253                        var isEven = ((i+1) % 2 == 0);
    12931254                        if( wasEven != isEven )
    1294                                 $(row).toggleClass('even', isEven);
     1255                                row.toggleClass('even', isEven);
    12951256                }
    12961257        },
     
    14971458                for( var i=keep.length, e; e=this._rows[i]; ++i ) {
    14981459                        delete e._torrent;
    1499                         e.style.display = 'none';
     1460                        e[0].style.display = 'none';
    15001461                }
    15011462
     
    15041465                for( var i=0, len=keep.length; i<len; ++i ) {
    15051466                        var e = this._rows[i];
    1506                         e.style.display = 'block';
     1467                        e[0].style.display = 'block';
    15071468                        var t = keep[i];
    15081469                        t.setElement( e );
Note: See TracChangeset for help on using the changeset viewer.