File indexing completed on 2024-05-19 04:55:07

0001 /*
0002     SPDX-FileCopyrightText: 2013-2015 Meltytech LLC
0003     SPDX-FileCopyrightText: 2013-2015 Dan Dennedy <dan@dennedy.org>
0004 
0005     SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 
0008 function scrollIfNeeded() {
0009     if (!scrollView) return;
0010     var x = root.consumerPosition * timeline.scaleFactor;
0011     if (x > scrollView.contentX + scrollView.width - 50)
0012         scrollView.contentX = x - scrollView.width + 50;
0013     else if (x < 50)
0014         scrollView.contentX = 0;
0015     else if (x < scrollView.contentX + 50)
0016         scrollView.contentX = x - 50;
0017 }
0018 
0019 function getTrackIndexFromPos(pos) {
0020     if (tracksRepeater.count > 0) {
0021         for (var i = 0; i < tracksRepeater.count; i++) {
0022             var trackY = tracksRepeater.itemAt(i).y
0023             var trackH = tracksRepeater.itemAt(i).height
0024             if (pos >= trackY && (pos < trackY + trackH || i == tracksRepeater.count - 1)) {
0025                 return i
0026             }
0027         }
0028     }
0029     return -1
0030 }
0031 
0032 function getTrackIdFromPos(pos) {
0033     var index = getTrackIndexFromPos(pos);
0034     if (index !== -1) {
0035         return tracksRepeater.itemAt(index).trackInternalId
0036     }
0037     return -1
0038 }
0039 
0040 function getTrackYFromId(id) {
0041     var result = 0
0042     for (var i = 0; i < trackHeaderRepeater.count; i++) {
0043         if (trackHeaderRepeater.itemAt(i).trackId === id) {
0044             break;
0045         }
0046         result += trackHeaderRepeater.itemAt(i).height
0047     }
0048     return result
0049 }
0050 
0051 function getTrackIndexFromId(id) {
0052     var i = 0;
0053     for (; i < trackHeaderRepeater.count; i++) {
0054         if (trackHeaderRepeater.itemAt(i).trackId === id) {
0055             break;
0056         }
0057     }
0058     return i
0059 }
0060 
0061 function getTrackHeaderById(id) {
0062     var i = 0;
0063     for (; i < trackHeaderRepeater.count; i++) {
0064         if (trackHeaderRepeater.itemAt(i).trackId === id) {
0065             return trackHeaderRepeater.itemAt(i);
0066         }
0067     }
0068     return 0
0069 }
0070 
0071 function getTrackById(id) {
0072     var i = 0;
0073     for (; i < tracksRepeater.count; i++) {
0074         if (tracksRepeater.itemAt(i).trackInternalId === id) {
0075             return tracksRepeater.itemAt(i);
0076         }
0077     }
0078     return 0
0079 }
0080 
0081 function getTrackHeightByPos(pos) {
0082     if (pos >= 0 && pos < tracksRepeater.count) {
0083         return tracksRepeater.itemAt(pos).height
0084     }
0085     return 0
0086 }
0087 
0088 function getTrackYFromMltIndex(id) {
0089     if (id <= 0) {
0090         return 0
0091     }
0092     var result = - scrollView.contentY
0093     for (var i = 0; i < trackHeaderRepeater.count - id; i++) {
0094         result += trackHeaderRepeater.itemAt(i).height
0095     }
0096     return result
0097 }
0098 
0099 function getTracksList() {
0100     var result = new Array(2);
0101     var aTracks = 0
0102     var vTracks = 0
0103     for (var i = 0; i < trackHeaderRepeater.count; i++) {
0104         if (trackHeaderRepeater.itemAt(i).isAudio) {
0105             aTracks ++;
0106         } else {
0107             vTracks ++;
0108         }
0109     }
0110     result[0] = aTracks;
0111     result[1] = vTracks;
0112     return result
0113 }
0114 
0115 function acceptDrop(xml) {
0116     var position = Math.round((dropTarget.x + scrollView.contentX - headerWidth) / timeline.scaleFactor)
0117     timeline.insertClip(currentTrack, position, xml)
0118     /*if (timeline.ripple)
0119         timeline.insert(currentTrack, position, xml)
0120     else
0121         timeline.overwrite(currentTrack, position, xml)*/
0122 }
0123 
0124 function trackHeight(isAudio) {
0125     return isAudio? Math.max(40, timeline.trackHeight) : timeline.trackHeight * 2
0126 }
0127