Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

50
LINES

< > BotCompany Repo | #1019774 // Timer [Dyn Module]

JavaX source code (Dynamic Module) [tags: use-pretranspiled] - run with: Stefan's OS

Uses 1117K of libraries. Click here for Pure Java version (8567L/45K).

!7

cmodule TimerModule > DynBigNumber {
  bool active;
  long setAt, setTill;
  
  start {
    dm_onTopInput(vf<S> setTimer);
    doEvery(1.0, r updateMe);
    preloadLibrary(#1400163);
  }
  
  void update {
    long now = now();
    if (setTill == 0 || !active) ret with setValue("");
    if (setTill <= now) {
      setField(active := false);
      ret with makeAlarm();
    } else {
      long seconds = iround(toSeconds(setTill-now));
      setValue(seconds/60 + ":" + formatInt(mod(seconds, 60), 2));
    }
  }
  
  void makeAlarm {
    setValue("ALARM!");
    infoBox_noHide("ALARM!");
    vmBus_send('timerAlarm, module());
    playWAVSnippet(#1400163);
  }
  
  // API
  
  void reset enter {
    setFields(active := false, setAt := 0L, setTill := 0L);
    update();
  }
  
  void setTimer(fS s) {
    final new Matches m;
    if "* minutes|* minute|set timer to * minutes" {
      switch to q();
      int minutes = parseEnglishNumberOrInt($1);
      if (minutes <= 0) ret;
      setFields(active := true, setAt := now(), setTill := now()+fromMinutes(minutes));
      dm_showModule();
      infoBox("Timer set to " + n2(minutes, "minute"));
    }
  }
}

download  show line numbers  debug dex  old transpilations   

Travelled to 11 computer(s): bhatertpkbcr, cfunsshuasjs, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv

No comments. add comment

Snippet ID: #1019774
Snippet name: Timer [Dyn Module]
Eternal ID of this version: #1019774/24
Text MD5: 61dcb0d6c22e67340508cd1bfa2938a6
Transpilation MD5: f542f6d84c0dbc313e3a6ccd16d79f95
Author: stefan
Category: javax / stefan's os
Type: JavaX source code (Dynamic Module)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2020-04-23 13:27:34
Source code size: 1212 bytes / 50 lines
Pitched / IR pitched: No / No
Views / Downloads: 413 / 5359
Version history: 23 change(s)
Referenced in: #1020212 - Stack Trace showing unnoticed deadlock in old version of setField()
#1020850 - dm_timerModuleOpt - if loaded
#1020892 - dm_requireTimer