~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/media/browser/listing.js

  • Committer: mattgiuca
  • Date: 2008-01-13 11:16:26 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:210
File browser: listing.js - The status bar is now updated whenever the
    selection changes. If files are selected, it shows the number of files
    selected and their size.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
/** Filenames of all files selected */
29
29
selected_files = [];
30
30
 
 
31
/** The listing object returned by the server as JSON */
 
32
file_listing = null;
 
33
 
31
34
/** Updates the side-panel and status bar to reflect the current set of
32
35
 * selected files. This is done by inspecting the states of the check boxes.
33
36
 * Also changes the styling to highlight selected files.
41
44
    var checkbox;
42
45
    var row_toggle = 1;
43
46
    selected_files = [];  /* Clear global selected_files */
 
47
 
 
48
    var total_files = 0;
 
49
    var total_file_size = 0;    /* In bytes */
 
50
    var total_file_size_sel = 0;
 
51
 
44
52
    /* Children are trs */
45
 
    for (var i=0; i<files_children.length; i++)
 
53
    var i = 0;
 
54
    var file;
 
55
    if (file_listing == null) return;
 
56
    for (var filename in file_listing)
46
57
    {
 
58
        /* Count total files and size so we can write to the status bar later
 
59
         */
 
60
        file = file_listing[filename];
 
61
        total_files++;
 
62
        if ("size" in file)
 
63
            total_file_size += file.size;
 
64
 
47
65
        tr = files_children[i];
48
66
        checked = tr.firstChild.firstChild.checked;
49
67
        /* Set the class for every row based on both the checked state,
54
72
        if (checked)
55
73
        {
56
74
            /* Add the filename (column 3) to the selected_files list */
57
 
            filename = tr.childNodes[3].firstChild;
58
 
            if (filename.nodeType == ELEMENT_NODE)
59
 
                filename = filename.firstChild.data;
60
 
            else
61
 
                filename = filename.data;
62
75
            selected_files[selected_files.length] = filename;
 
76
            if ("size" in file)
 
77
                total_file_size_sel += file.size;
63
78
        }
64
 
    }
 
79
        i++;
 
80
    }
 
81
 
 
82
    /* Write to the status bar */
 
83
    var statusbar = document.getElementById("statusbar");
 
84
    var statusmsg;
 
85
    var file_plural;
 
86
    if (selected_files.length > 0)
 
87
    {
 
88
        statusmsg = selected_files.length.toString() + " file"
 
89
            + (selected_files.length == 1 ? "" : "s") + " selected, "
 
90
            + nice_filesize(total_file_size_sel);
 
91
    }
 
92
    else
 
93
    {
 
94
        statusmsg = total_files.toString() + " file"
 
95
            + (total_files == 1 ? "" : "s") + ", "
 
96
            + nice_filesize(total_file_size);
 
97
    }
 
98
    dom_removechildren(statusbar);
 
99
    statusbar.appendChild(document.createTextNode(statusmsg));
65
100
}
66
101
 
67
102
/** Clears all selected files and causes the single file specified to become
159
194
    var i;
160
195
    /* Nav through the top-level of the JSON to the actual listing object. */
161
196
    var listing = listing.listing;
 
197
    file_listing = listing;     /* Global */
162
198
 
163
199
    /* Get "." out, it's special */
164
200
    var thisdir = listing["."];
172
208
    var td;
173
209
    var checkbox;
174
210
 
175
 
    var total_files = 0;
176
 
    var total_file_size = 0;    /* In bytes */
177
 
 
178
211
    var selection_string;
179
212
 
180
213
    /* Create all of the files */
183
216
    {
184
217
        selection_string = "select_file(" + i.toString() + ")";
185
218
        file = listing[filename];
186
 
        total_files++;
187
 
        if ("size" in file)
188
 
            total_file_size += file.size;
189
219
        /* Make a 'tr' element */
190
220
        row = document.createElement("tr");
191
221
        /* Column 1: Selection checkbox */
252
282
        i++;
253
283
    }
254
284
 
255
 
    /* Write to the status bar */
256
 
    var statusbar = document.getElementById("statusbar");
257
 
    var statusmsg = total_files.toString() + " files, "
258
 
        + nice_filesize(total_file_size);
259
 
    dom_removechildren(statusbar);
260
 
    statusbar.appendChild(document.createTextNode(statusmsg));
 
285
    /* Do a selection update (create initial elements for side panel and
 
286
     * status bar). */
 
287
    update_selection();
261
288
}
262
289