@@ -276,6 +276,8 @@ object Start extends SimpleSwingApplication {
276
276
val iconName = s " /user- $state.ico "
277
277
Tray .setImage(iconName)
278
278
mainFrame.peer.setIconImages(iconImages(iconName))
279
+ mainFrame.users.html = mainFrame.adjustCurrentUser(mainFrame.usersHtmlString)
280
+
279
281
}
280
282
281
283
private object Tray {
@@ -460,6 +462,7 @@ object Start extends SimpleSwingApplication {
460
462
peer.addKeyListener(watchKeyboard)
461
463
462
464
465
+ var usersHtmlString = " "
463
466
val users = new HtmlPanel (serverUrl)
464
467
465
468
val notifications = new HtmlPanel (serverUrl) {
@@ -499,8 +502,9 @@ object Start extends SimpleSwingApplication {
499
502
}
500
503
501
504
private def replaceTime (in : String , displayFunc : ZonedDateTime => String ): String = {
505
+ @ scala.annotation.tailrec
502
506
def recurse (s : String ): String = {
503
- val Time = " (?s)(.*)<time>([^<]+)<\\ /time>(.*)" .r
507
+ val Time = " (?s)(.*)<time>([^<]+)</time>(.*)" .r
504
508
s match {
505
509
case Time (prefix, time, postfix) =>
506
510
recurse(prefix + displayFunc(ZonedDateTime .parse(time)) + postfix)
@@ -511,8 +515,19 @@ object Start extends SimpleSwingApplication {
511
515
recurse(in)
512
516
}
513
517
518
+ def adjustCurrentUser (in : String ): String = {
519
+ val CurrentUserState = s """ (?s)(.*<tr data-user=" $loginName">[^<]*<td>[^<]*<img[^>]*user-)([a-z]+)(.*) """ .r
520
+ in match {
521
+ case CurrentUserState (prefix, _, postfix) =>
522
+ prefix + cfg.state + postfix
523
+ case _ =>
524
+ in
525
+ }
526
+ }
527
+
514
528
def setUsers (usHTML : String , statusText : String ): this .type = {
515
- users.html = replaceTime(usHTML, displayTime)
529
+ usersHtmlString = replaceTime(usHTML, displayTime)
530
+ users.html = adjustCurrentUser(usersHtmlString)
516
531
reportTray(replaceTime(statusText, displayTime))
517
532
this
518
533
}
0 commit comments