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 }