File indexing completed on 2024-05-19 05:34:08

0001 /*
0002     SPDX-FileCopyrightText: 2016 Smith AR <audoban@openmailbox.org>
0003     SPDX-FileCopyrightText: 2016-2018 Michail Vourlakos <mvourlakos@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 function wheelActivateNextPrevTask(wheelDelta, eventDelta) {
0008     // magic number 120 for common "one click"
0009     // See: http://qt-project.org/doc/qt-5/qml-qtquick-wheelevent.html#angleDelta-prop
0010     wheelDelta += eventDelta;
0011     var increment = 0;
0012     while (wheelDelta >= 120) {
0013         wheelDelta -= 120;
0014         increment++;
0015     }
0016     while (wheelDelta <= -120) {
0017         wheelDelta += 120;
0018         increment--;
0019     }
0020     while (increment != 0) {
0021         activateNextPrevTask(increment < 0)
0022         increment += (increment < 0) ? 1 : -1;
0023     }
0024 
0025     return wheelDelta;
0026 }
0027 
0028 function activateTask(index, model, modifiers, task) {
0029     if (modifiers & Qt.ControlModifier) {
0030         tasksModel.requestNewInstance(index);
0031     } else if (task.isGroupParent) {
0032         task.activateNextTask();
0033        // if (backend.canPresentWindows()) {
0034         //    backend.presentWindows(model.LegacyWinIdList);
0035        // }
0036         /*} else if (groupDialog.visible) {
0037             groupDialog.visible = false;
0038         } else {
0039             groupDialog.visualParent = task;
0040             groupDialog.visible = true;
0041         }*/
0042     } else {
0043         if (model.IsMinimized === true) {
0044             tasksModel.requestToggleMinimized(index);
0045             tasksModel.requestActivate(index);
0046         } else if (model.IsActive === true) {
0047             tasksModel.requestToggleMinimized(index);
0048         } else {
0049             tasksModel.requestActivate(index);
0050         }
0051     }
0052 }
0053 
0054 
0055 function activateNextPrevTask(next) {
0056     // FIXME TODO: Unnecessarily convoluted and costly; optimize.
0057 
0058     var taskIndexList = [];
0059     var activeTaskIndex = tasksModel.activeTask;
0060 
0061     for (var i = 0; i < taskList.children.length - 1; ++i) {
0062         var task = taskList.children[i];
0063         var modelIndex = task.modelIndex(i);
0064 
0065         if (task !== undefined){
0066             if (task.IsLauncher !== true && task.IsStartup !== true) {
0067                 if (task.m.IsGroupParent === true) {
0068                     for (var j = 0; j < tasksModel.rowCount(modelIndex); ++j) {
0069                         taskIndexList.push(tasksModel.makeModelIndex(i, j));
0070                     }
0071                 } else {
0072                     taskIndexList.push(modelIndex);
0073                 }
0074             }
0075         }
0076     }
0077 
0078     if (!taskIndexList.length) {
0079         return;
0080     }
0081 
0082     var target = taskIndexList[0];
0083 
0084     for (var i = 0; i < taskIndexList.length; ++i) {
0085         if (taskIndexList[i] === activeTaskIndex)
0086         {
0087             if (next && i < (taskIndexList.length - 1)) {
0088                 target = taskIndexList[i + 1];
0089             } else if (!next) {
0090                 if (i) {
0091                     target = taskIndexList[i - 1];
0092                 } else {
0093                     target = taskIndexList[taskIndexList.length - 1];
0094                 }
0095             }
0096 
0097             break;
0098         }
0099     }
0100 
0101     tasksModel.requestActivate(target);
0102 }
0103 
0104 function insertIndexAt(above, x, y) {
0105     if (above && above.itemIndex) {
0106         return above.itemIndex;
0107     } else {
0108         var distance = root.vertical ? y : x;
0109         //var step = root.vertical ? LayoutManager.taskWidth() : LayoutManager.taskHeight();
0110         var step = appletAbilities.metrics.totals.length;
0111         var stripe = Math.ceil(distance / step);
0112 
0113         /* if (stripe === LayoutManager.calculateStripes()) {
0114             return tasksModel.count - 1;
0115         } else {
0116             return stripe * LayoutManager.tasksPerStripe();
0117         }*/
0118 
0119         return stripe-1;
0120     }
0121 }