@ -43,10 +43,6 @@ Item {
/ / ( i d , m S c a l e )
property variant frozenTasks: [ ]
/ / t h e i n t e r n a l s e p a r a t o r s i n t h e f o r m
/ / ( l a u n c h e r U r l , i n d e x )
property variant separators: [ ]
/ / n e w l a u n c h e r s i n o r d e r t o b e m o v e d i n c o r r e c t p l a c e
/ / ( l a u n c h e r , p o s )
property variant launchersToBeMoved: [ ]
@ -54,61 +50,16 @@ Item {
Connections {
target: root
onTasksCountChanged: parManager . updateTasksEdgesIndexes ( ) ;
onDragSourceChanged: {
if ( ! root . dragSource && parManager . hasInternalSeparator ) {
/ / ! S e n d t h e i n t e r n a l s e p a r a t o r s t o o t h e r d o c k s
var tasks = icList . contentItem . children ;
var size = icList . contentItem . children . length ;
var tempSeparatorsArray = [ ] ;
var tempSeparatorsIndexes = [ ] ;
for ( var i = 0 ; i < size ; ++ i ) {
if ( i >= icList . contentItem . children . length ) {
break ;
}
if ( tasks [ i ] && tasks [ i ] . isSeparator ) {
tempSeparatorsArray . push ( tasks [ i ] . launcherUrl ) ;
tempSeparatorsIndexes . push ( tasks [ i ] . itemIndex ) ;
}
}
if ( tempSeparatorsArray . length > 0 ) {
if ( latteDock && latteDock . launchersGroup >= Latte . Dock . LayoutLaunchers ) {
/ / r e o r d e r t o l o w e s t
for ( var i = 0 ; i < tempSeparatorsIndexes . length ; ++ i ) {
var lowIndex = i ;
for ( var j = i ; j < tempSeparatorsIndexes . length ; ++ j ) {
if ( tempSeparatorsIndexes [ j ] < tempSeparatorsIndexes [ lowIndex ] ) {
lowIndex = j ;
}
}
if ( lowIndex !== i ) {
/ / m o v i n g
var tempInd = tempSeparatorsIndexes [ lowIndex ] ;
tempSeparatorsIndexes . splice ( lowIndex , 1 ) ;
tempSeparatorsIndexes . splice ( i , 0 , tempInd ) ;
var tempName = tempSeparatorsArray [ lowIndex ] ;
tempSeparatorsArray . splice ( lowIndex , 1 ) ;
tempSeparatorsArray . splice ( i , 0 , tempName ) ;
}
}
latteDock . universalLayoutManager . launchersSignals . internalSeparators ( root . managedLayoutName ,
plasmoid . id ,
latteDock . launchersGroup ,
tempSeparatorsArray ,
tempSeparatorsIndexes ) ;
}
}
}
}
}
Component.onCompleted: {
updateHasInternalSeparator ( ) ;
updateTasksEdgesIndexes ( ) ;
root . separatorsUpdated . connect ( updateHasInternalSeparator ) ;
}
Component.onDestruction: {
root . separatorsUpdated . disconnect ( updateHasInternalSeparator ) ;
}
function updateTasksEdgesIndexes ( ) {
@ -125,6 +76,20 @@ Item {
countRealTasks = realTasks ( ) ;
}
function updateHasInternalSeparator ( ) {
var count = icList . contentItem . children . length ;
for ( var i = 0 ; i < count ; ++ i ) {
var task = icList . childAtIndex ( i ) ;
if ( task && task . isSeparator ) {
hasInternalSeparator = true ;
return ;
}
}
hasInternalSeparator = false ;
}
/ / ! t h i s i s u s e d i n o r d e r t o u p d a t e t h e i n d e x w h e n t h e s i g n a l i s f o r a p p l e t s
/ / ! o u t s i d e t h e l a t t e p l a s m o i d
function updateIdSendScale ( index , zScale , zStep ) {
@ -310,63 +275,6 @@ Item {
}
}
/ / ! S E P A R A T O R S f u n c t i o n s
/ / u p d a t e t h e r e g i s t e r e d s e p a r a t o r s
/ / l a u n c h e r U r l , n o = a d d / u p d a t e s e p a r a t o r
/ / l a u n c h e r U r l , - 1 = r e m o v e s e p a r a t o r
function setSeparator ( launcher , taskIndex ) {
var currentPos = separatorArrayPos ( launcher ) ;
var updated = false ;
if ( currentPos === - 1 && taskIndex >= 0 ) {
/ / a d d t h a t s e p a r a t o r
/ / c o n s o l e . l o g ( " a d d s e p a r a t o r : " + l a u n c h e r + " a t : " + t a s k I n d e x ) ;
separators . push ( { launcherUrl: launcher , index: taskIndex } ) ;
updated = true ;
} else if ( currentPos > - 1 && taskIndex === - 1 ) {
/ / r e m o v e t h a t s e p a r a t o r
/ / c o n s o l e . l o g ( " r e m o v e s e p a r a t o r : " + l a u n c h e r ) ;
separators . splice ( currentPos , 1 ) ;
updated = true ;
} else if ( currentPos > - 1 && taskIndex > - 1 && separators [ currentPos ] . index !== taskIndex ) {
/ / u p d a t e t h a t s e p a r a t o r
/ / c o n s o l e . l o g ( " u p d a t e s e p a r a t o r : " + l a u n c h e r + " f r o m : " + s e p a r a t o r s [ c u r r e n t P o s ] . i n d e x + " - > " + t a s k I n d e x ) ;
separators [ currentPos ] . index = taskIndex ;
updated = true ;
}
/ / i f ( s e p a r a t o r s . l e n g t h > 0 )
/ / c o n s o l e . l o g ( s e p a r a t o r s [ 0 ] . l a u n c h e r U r l + " _ _ _ _ _ _ _ _ _ " + s e p a r a t o r s [ 0 ] . i n d e x ) ;
if ( updated ) {
/ / c o n s o l e . l o g ( " m e s s a g e s e n t . . . " ) ;
hasInternalSeparator = separators . length > 0 ;
updateTasksEdgesIndexes ( ) ;
root . separatorsUpdated ( ) ;
}
}
function separatorArrayPos ( launcher ) {
var res = - 1 ;
var sLength = separators . length ;
for ( var i = 0 ; i < sLength ; ++ i ) {
/ / ! s a f e t y c h e c k e r
if ( i >= separators . length )
return false ;
if ( separators [ i ] . launcherUrl === launcher )
return i ;
}
return res ;
}
function availableLowerIndex ( from ) {
var next = from ;
@ -393,18 +301,9 @@ Item {
}
function taskIsSeparator ( taskIndex ) {
var sLength = separators . length ;
for ( var i = 0 ; i < sLength ; ++ i ) {
/ / ! s a f e t y c h e c k e r
if ( i >= separators . length )
return false ;
if ( separators [ i ] . index === taskIndex )
return true ;
}
var task = icList . childAtIndex ( taskIndex ) ;
return false ;
return ( task && ! task . isForcedHidden && task . isSeparator ) ;
}
function taskIsForcedHidden ( taskIndex ) {
@ -412,7 +311,7 @@ Item {
/ / ! t a s k s t h a t b e c o m e h i d d e n t h e r e i s a c h a n c e t o h a v e i n d e x = = = - 1 a n d t o n o t b e
/ / ! a b l e t o b e t r a c k e d d o w n
return ( ( ! task && ( taskIndex >= 0 && taskIndex < root. tasksC ount) ) || task . isForcedHidden ) ;
return ( ( ! task && ( taskIndex >= 0 && taskIndex < tasksModel. c ount) ) || task . isForcedHidden ) ;
}
function separatorExists ( separator ) {
@ -496,14 +395,14 @@ Item {
var space = lastRealTaskIndex - firstRealTaskIndex ;
if ( space >= 0 ) {
var i nternseparators = 0 ;
var i gnored = 0 ;
for ( var i = firstRealTaskIndex ; i < lastRealTaskIndex ; ++ i ) {
if ( taskIsSeparator ( i ) ) {
i nternseparators = internseparators + 1 ;
if ( taskIsSeparator ( i ) || taskIsForcedHidden ( i ) ) {
i gnored = ignored + 1 ;
}
}
return space + 1 - i nternseparators ;
return space + 1 - i gnored ;
}
return 0 ;
@ -642,10 +541,6 @@ Item {
plasmoid . id , latteDock . launchersGroup , from , to ) ;
}
if ( isSeparator ( launcherUrl ) ) {
setSeparator ( launcherUrl , to ) ;
}
tasksModel . syncLaunchers ( ) ;
}
}