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 var currentActivity;
0008 var launchersOnActivities;
0009 //it is used as the first item in the stringList in order to check the list is ok
0010 var indicator = 'multi';
0011 var plasmoid;
0012 
0013 function importLaunchersToNewArchitecture(){
0014     if (plasmoid.configuration.launchers59.length>0 || plasmoid.configuration.launchers.length===0)
0015         return;
0016 
0017     console.log("------------- Importing Launchers To New Architecture --------------");
0018 
0019     restoreLaunchers();
0020     var newLaunchers = [];
0021 
0022     var size = launchersOnActivities.length;
0023     for(var i=size-1; i>=0; --i){
0024         var activitySaving = get(launchersOnActivities[i].id);
0025         if(activitySaving.launchers.length>0){
0026             //this fixes the segmentation fault of previous command....
0027             for(var j=0; j<activitySaving.launchers.length; ++j){
0028                 console.log(String(activitySaving.id) + "  -  " + String(activitySaving.launchers[j]));
0029                 var newString = "";
0030                 if (activitySaving.id === '*')
0031                     newString = activitySaving.launchers[j];
0032                 else {
0033                     newString = "["+activitySaving.id+"]\n"+activitySaving.launchers[j];
0034                 }
0035                 newLaunchers.push(newString);
0036             }
0037         }
0038     }
0039 
0040     plasmoid.configuration.launchers59 = newLaunchers;
0041     plasmoid.configuration.launchers = "";
0042 }
0043 
0044 function restoreLaunchers(){
0045     ///this is a stringlist of types activityId, number of launchers, launchers
0046     if(plasmoid && plasmoid.configuration && currentActivity != "00000000-0000-0000-0000-000000000000"){
0047         var values = plasmoid.configuration.launchers;
0048         values = values.split(";");
0049         var returnedStringList = [];
0050 
0051     //    console.log("----------------------- Restoring ---------------------");
0052      //   console.log("Full Restoration:"+values);
0053         var type = values.splice(0,1);
0054 
0055         //  console.log("Pass 1 - " +type);
0056         if (type == indicator){
0057             //  console.log("Pass 2");
0058             while (values.length > 2){
0059                 //   console.log("Pass 3 - "+values);
0060                 var actId = values[0];
0061                 var subLaunchers = values.splice(2,values[1]);
0062             //  console.log("To Be Restored launchers, "+actId+ ", "+subLaunchers.length+", "+subLaunchers);
0063 
0064                 var activityRecord = get(actId);
0065                 if(activityRecord){
0066                     //      console.log("Activity item found...");
0067                     if(activityRecord.launchers)
0068                         activityRecord.launchers.splice(0,activityRecord.launchers.length);
0069 
0070                     activityRecord.launchers = subLaunchers;
0071                 }
0072                 else{
0073                     //      console.log("Activity item is added...");
0074                     var res = {id:values[0], launchers:subLaunchers};
0075                     launchersOnActivities.push(res);
0076                 }
0077 
0078                 values.splice(0,2);
0079 
0080             }
0081         }
0082 
0083         if (get('*'))
0084             returnedStringList = returnedStringList.concat(get('*').launchers);
0085         else{
0086             var result = {id:'*', launchers:[]};
0087             launchersOnActivities.push(result);
0088         }
0089 
0090         if (get(currentActivity))
0091             returnedStringList = returnedStringList.concat(get(currentActivity).launchers);
0092 
0093         //     console.log("Restored Strings:"+returnedStringList);
0094 
0095         return returnedStringList;
0096     }
0097     else
0098         return [];
0099 }
0100 
0101 function saveLaunchers(){
0102   //  console.log("----------------------- Saving ---------------------");
0103 
0104     var returnedStringList = [];
0105     returnedStringList.push(indicator);
0106 
0107     //  console.log("Array Size:"+launchersOnActivities.length);
0108     var size = launchersOnActivities.length;
0109     for(var i=size-1; i>=0; --i){
0110         var activitySaving = get(launchersOnActivities[i].id);
0111      //   console.log("Saving, "+activitySaving.id + " - "+activitySaving.launchers.length+" - "+activitySaving.launchers);
0112         if(activitySaving.launchers.length>0){
0113         /*    console.log("------- "+activitySaving.id+" ----------");
0114             for(var j=0; j<activitySaving.launchers.length; ++j){
0115                 console.log(activitySaving.launchers[j]);
0116             }*/
0117 
0118             returnedStringList = returnedStringList.concat(String(activitySaving.id));
0119             returnedStringList = returnedStringList.concat(String(activitySaving.launchers.length));
0120             // this creates segmentation faults in some cases!!!!
0121           //  returnedStringList = returnedStringList.concat(activitySaving.launchers);
0122 
0123             //this fixes the segmentation fault of previous command....
0124             for(var j=0; j<activitySaving.launchers.length; ++j){
0125                 returnedStringList.push(String(activitySaving.launchers[j]));
0126             }
0127 
0128             ///check returnedStringList integrity
0129      /*       for(var j=0; j<returnedStringList.length; ++j){
0130                 console.log("--- "+j+". "+returnedStringList[j]);
0131             }*/
0132         }
0133     }
0134 
0135   /*  console.log("I am out..... "+returnedStringList.length);
0136     for(var i=0; i<returnedStringList.length; ++i){
0137         console.log(i+". "+returnedStringList[i]);
0138     }*/
0139 
0140     // console.log("IMPORTANT SAVED LIST: "+returnedStringList);
0141 
0142     plasmoid.configuration.launchers = returnedStringList.join(";");
0143 }
0144 
0145 function updateLaunchers(launcherList){
0146     //console.log("----------------------- Updating ---------------------");
0147     //console.log("---- Full Launchers ------");
0148     for(var j=0; j<launcherList.length; ++j){
0149         console.log(launcherList[j]);
0150     }
0151 
0152     var tempList;
0153     if(launcherList.length > 0){
0154         tempList = launcherList.slice(0);
0155     }
0156     else{
0157         tempList =[];
0158     }
0159 
0160     // console.log("IMPORTANT SENT LIST: "+tempList.length+" - "+launcherList.length+" - "+tempList);
0161     //
0162     //  console.log("In memory Defaults:" + get('*').launchers);
0163     //  if(get(currentActivity))
0164     //    console.log("In memory Current: "+get(currentActivity).launchers.length+ ' - ' + get(currentActivity).launchers);
0165 
0166     var currentList = get(currentActivity);
0167 
0168     var resultedCurrent = [];
0169     // console.log("-------------");
0170 
0171     for(var i=tempList.length-1; i>=0; --i){
0172         var index=-1;
0173         if(currentList){
0174             index = getIndex(String(tempList[i]), currentList.launchers);
0175         }
0176 
0177         if(index >=0 || isInSpecificActivity(tempList[i])){
0178             var result = tempList.splice(i,1);
0179             resultedCurrent.unshift(String(result));
0180         }
0181     }
0182 
0183    // console.log("Resulted Current: "+resultedCurrent);
0184 
0185  /*   console.log("---- To Be Set List ------");
0186     for(var j=0; j<resultedCurrent.length; ++j){
0187         console.log(resultedCurrent[j]);
0188     }*/
0189 
0190     setActivityLaunchers(resultedCurrent, currentActivity);
0191     setDefaultLaunchers(tempList);
0192 
0193     saveLaunchers();
0194 }
0195 
0196 /////////////
0197 function cleanupRecords(activities){
0198     for(var i=0; i<launchersOnActivities.length; ++i){
0199         if(launchersOnActivities[i].id != '*'){
0200             var index = getIndex(launchersOnActivities[i].id, activities);
0201             if(index < 0){
0202                 console.log("Orphaned Activity Settings removed:"+launchersOnActivities[i].id);
0203                 launchersOnActivities.splice(index,1);
0204             }
0205         }
0206     }
0207     saveLaunchers();
0208 }
0209 
0210 
0211 function getIndex(id, list){
0212     if(list){
0213         for(var i=0; i<list.length; ++i){
0214             if(id == list[i])
0215                 return i;
0216         }
0217     }
0218 
0219     return -1;
0220 }
0221 
0222 function get(actId){
0223     for(var i=0; i<launchersOnActivities.length; ++i){
0224         if(launchersOnActivities[i].id == actId)
0225             return launchersOnActivities[i];
0226     }
0227 
0228     return;
0229 }
0230 
0231 function isOnAllActivities(id){
0232     var defaults =  get('*').launchers;
0233     var index = getIndex(String(id),defaults);
0234     if (index>=0)
0235         return true;
0236 
0237     //  console.log("Check exists:"+id+ " - "+ "pos:"+index+" ,,, "+ get('*').activities);
0238     return false;
0239 }
0240 
0241 function isInSpecificActivity(id){
0242     for(var i=0; i<launchersOnActivities.length; ++i){
0243         var activity = launchersOnActivities[i];
0244         if(activity.id != "*"){
0245             var launchers = activity.launchers;
0246             var index = getIndex(String(id),launchers)
0247             if (index>=0)
0248                 return true;
0249         }
0250     }
0251 
0252     return false;
0253 }
0254 
0255 
0256 function setDefaultLaunchers(launchersList){
0257   //  console.log("Set Default Launchers");
0258     if(!get('*')){
0259         var result = {id:'*', launchers:launchersList};
0260         launchersOnActivities.push(result);
0261     }
0262     else{
0263         if (get('*').launchers)
0264             get('*').launchers.splice(0,get('*').launchers.length);
0265         get('*').launchers=launchersList;
0266     }
0267 
0268     // console.log("Default:::: "+get('*').launchers);
0269 }
0270 
0271 function setActivityLaunchers(launchersList, actId){
0272    // console.log("Set Activity Launchers");
0273     var currentList = get(actId);
0274     //  console.log("-------------");
0275     //  console.log("ResultedForMemory: "+launchersList);
0276     if(currentList){
0277         if(currentList.launchers)
0278             currentList.launchers.splice(0,currentList.launchers.length);
0279 
0280       //  console.log("list exists");
0281         currentList.launchers=launchersList;
0282     }
0283     else{
0284     //    console.log("new list");
0285         var res = {id:actId, launchers:launchersList};
0286         launchersOnActivities.push(res);
0287     }
0288 
0289  /*   console.log("New Memory List: "+get(actId).launchers);
0290     for(var j=0; j<get(actId).launchers.length; ++j){
0291         console.log(get(actId).launchers[j]);
0292     } */
0293 }
0294 
0295 ///from launcher to All Activities to the current only and vice versa
0296 function toggleLauncherState(id){
0297     if (isOnAllActivities(id)){
0298         removeFromList(id,'*')
0299         addToList(id, currentActivity);
0300     }
0301     else{
0302         removeFromAllSimpleLists(id);
0303         addToList(id, '*');
0304     }
0305 
0306     saveLaunchers();
0307 }
0308 
0309 function removeLauncher(id){
0310     if(get(currentActivity))
0311         removeFromList(id, currentActivity);
0312 
0313     removeFromList(id, '*');
0314 }
0315 
0316 function removeFromAllSimpleLists(id){
0317     for(var i=0; i<launchersOnActivities.length; ++i){
0318         var activity = launchersOnActivities[i];
0319         if(activity.id != "*"){
0320             removeFromList(id, activity.id);
0321         }
0322     }
0323 }
0324 
0325 
0326 function removeFromList(id, activityId){
0327     var list = get(activityId);
0328     if(list){
0329         var activityList = list.launchers;
0330         var index = getIndex(String(id),activityList);
0331 
0332         if(index >= 0){
0333             activityList.splice(index, 1);
0334         }
0335     }
0336 }
0337 
0338 function addToList(id, activityId){
0339     var activity = get(activityId);
0340     if(!activity){
0341         var res = {id:activityId, launchers:[]};
0342         res.launchers.push(id);
0343         launchersOnActivities.push(res);
0344     }
0345     else{
0346         var launcherList = activity.launchers;
0347         var index = getIndex(id,launcherList);
0348         if(index<0){
0349             launcherList.push(id);
0350         }
0351 
0352     }
0353 }