wsdfhjxc added a comment.

  Unfortunately, comparing by `item.text` with a non-US language enabled makes 
the result worse than on previous screenshot (especially the order of items 
within the `Hardware` group is very odd). To get it consistent regardless of 
system's language setting it might be better to compare by `item.itemId`. 
Although `StatusNotifierItem` may have it undefined initially, it can be fixed 
with a timer hack and waiting till a proper `Id` is available, then updating 
the `itemId` property and calling `updateItemVisibility()` function.
  
  Modifying the comparing function to look at `item.itemId` instead of 
`item.text` makes the result no better than it was originally. However, if 
compared strings are slightly altered in a specific way, the result might be 
better (something like a seed to get the most satisfying pattern). For example:
  
    function compareItems(a, b) {
        var categoryDiff = indexForItemCategory(a) - indexForItemCategory(b)
        var altA = a.itemId ? a.itemId.replace("org.kde.", 
"").replace("plasma.", "") : ""
        var altB = b.itemId ? b.itemId.replace("org.kde.", 
"").replace("plasma.", "") : ""
        altA = altA.substring(altA.length / 2, altA.length)        
        altB = altB.substring(altB.length / 2, altB.length)
        return categoryDiff != 0 ? categoryDiff : altA.localeCompare(altB)
    }
  
  Screenshot below presents the item ordering result after this modification, 
which is consistent regardless of system's language setting and which looks 
nicer in my opinion.
  F5759917: Items.png <https://phabricator.kde.org/F5759917>
  
  I don't really have any other ideas on further improvements, so forgive me if 
you find this one utterly stupid, I promise there will bo no more of them :)

REPOSITORY
  R120 Plasma Workspace

REVISION DETAIL
  https://phabricator.kde.org/D11352

To: Pitel
Cc: wsdfhjxc, mart, plasma-devel, ZrenBot, lesliezhai, ali-mohamed, 
jensreuterberg, abetts, sebas, apol

Reply via email to