瀏覽代碼

🐛 Fix JyersUI scrolling filename, etc. (#23082)

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
dwzg 3 年之前
父節點
當前提交
30a69f76a3
沒有連結到貢獻者的電子郵件帳戶。
共有 1 個檔案被更改,包括 26 行新增24 行删除
  1. 26
    24
      Marlin/src/lcd/e3v2/jyersui/dwin.cpp

+ 26
- 24
Marlin/src/lcd/e3v2/jyersui/dwin.cpp 查看文件

678
   static uint8_t namescrl = 0;
678
   static uint8_t namescrl = 0;
679
   if (reset) namescrl = 0;
679
   if (reset) namescrl = 0;
680
   if (process == Print) {
680
   if (process == Print) {
681
-    size_t len = strlen(filename);
682
-    int8_t pos = len;
683
-    if (pos > 30) {
684
-      pos -= namescrl;
685
-      len = _MIN(pos, 30);
686
-      char dispname[len + 1];
681
+    constexpr int8_t maxlen = 30;
682
+    char *outstr = filename;
683
+    size_t slen = strlen(filename);
684
+    int8_t outlen = slen;
685
+    if (slen > maxlen) {
686
+      char dispname[maxlen + 1];
687
+      int8_t pos = slen - namescrl, len = maxlen;
687
       if (pos >= 0) {
688
       if (pos >= 0) {
689
+        NOMORE(len, pos);
688
         LOOP_L_N(i, len) dispname[i] = filename[i + namescrl];
690
         LOOP_L_N(i, len) dispname[i] = filename[i + namescrl];
689
       }
691
       }
690
       else {
692
       else {
691
-        LOOP_L_N(i, 30 + pos) dispname[i] = ' ';
692
-        LOOP_S_L_N(i, 30 + pos, 30) dispname[i] = filename[i - (30 + pos)];
693
+        const int8_t mp = maxlen + pos;
694
+        LOOP_L_N(i, mp) dispname[i] = ' ';
695
+        LOOP_S_L_N(i, mp, maxlen) dispname[i] = filename[i - mp];
696
+        if (mp <= 0) namescrl = 0;
693
       }
697
       }
694
       dispname[len] = '\0';
698
       dispname[len] = '\0';
695
-      DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 50, DWIN_WIDTH - 8, 80);
696
-      const int8_t npos = (DWIN_WIDTH - 30 * MENU_CHR_W) / 2;
697
-      DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, npos, 60, dispname);
698
-      if (-pos >= 30) namescrl = 0;
699
+      outstr = dispname;
700
+      outlen = maxlen;
699
       namescrl++;
701
       namescrl++;
700
     }
702
     }
701
-    else {
702
-      DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 50, DWIN_WIDTH - 8, 80);
703
-      const int8_t npos = (DWIN_WIDTH - strlen(filename) * MENU_CHR_W) / 2;
704
-      DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, npos, 60, filename);
705
-    }
703
+    DWIN_Draw_Rectangle(1, Color_Bg_Black, 8, 50, DWIN_WIDTH - 8, 80);
704
+    const int8_t npos = (DWIN_WIDTH - outlen * MENU_CHR_W) / 2;
705
+    DWIN_Draw_String(false, DWIN_FONT_MENU, Color_White, Color_Bg_Black, npos, 60, outstr);
706
   }
706
   }
707
 }
707
 }
708
 
708
 
4702
   char header[4];
4702
   char header[4];
4703
   LOOP_L_N(i, 3) header[i] = text[i];
4703
   LOOP_L_N(i, 3) header[i] = text[i];
4704
   header[3] = '\0';
4704
   header[3] = '\0';
4705
-  if (strcmp_P(header,"<F>") == 0) {
4705
+  if (strcmp_P(header, PSTR("<F>")) == 0) {
4706
     LOOP_L_N(i, _MIN((size_t)LONG_FILENAME_LENGTH, strlen(text))) filename[i] = text[i + 3];
4706
     LOOP_L_N(i, _MIN((size_t)LONG_FILENAME_LENGTH, strlen(text))) filename[i] = text[i + 3];
4707
     filename[_MIN((size_t)LONG_FILENAME_LENGTH - 1, strlen(text))] = '\0';
4707
     filename[_MIN((size_t)LONG_FILENAME_LENGTH - 1, strlen(text))] = '\0';
4708
     Draw_Print_Filename(true);
4708
     Draw_Print_Filename(true);
4798
 }
4798
 }
4799
 
4799
 
4800
 void CrealityDWINClass::Screen_Update() {
4800
 void CrealityDWINClass::Screen_Update() {
4801
+  const millis_t ms = millis();
4801
   static millis_t scrltime = 0;
4802
   static millis_t scrltime = 0;
4802
-  if (ELAPSED(millis(), scrltime)) {
4803
-    scrltime = millis() + 200;
4803
+  if (ELAPSED(ms, scrltime)) {
4804
+    scrltime = ms + 200;
4804
     Update_Status_Bar();
4805
     Update_Status_Bar();
4805
     if (process == Print) Draw_Print_Filename();
4806
     if (process == Print) Draw_Print_Filename();
4806
   }
4807
   }
4807
 
4808
 
4808
   static millis_t statustime = 0;
4809
   static millis_t statustime = 0;
4809
-  if (ELAPSED(millis(), statustime)) {
4810
-    statustime = millis() + 500;
4810
+  if (ELAPSED(ms, statustime)) {
4811
+    statustime = ms + 500;
4811
     Draw_Status_Area();
4812
     Draw_Status_Area();
4812
   }
4813
   }
4813
 
4814
 
4814
   static millis_t printtime = 0;
4815
   static millis_t printtime = 0;
4815
-  if (ELAPSED(millis(), printtime)) {
4816
-    printtime = millis() + 1000;
4816
+  if (ELAPSED(ms, printtime)) {
4817
+    printtime = ms + 1000;
4817
     if (process == Print) {
4818
     if (process == Print) {
4818
       Draw_Print_ProgressBar();
4819
       Draw_Print_ProgressBar();
4819
       Draw_Print_ProgressElapsed();
4820
       Draw_Print_ProgressElapsed();
5000
   void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) {
5001
   void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) {
5001
     switch (message) {
5002
     switch (message) {
5002
       case PAUSE_MESSAGE_INSERT:  CrealityDWIN.Confirm_Handler(FilInsert);  break;
5003
       case PAUSE_MESSAGE_INSERT:  CrealityDWIN.Confirm_Handler(FilInsert);  break;
5004
+      case PAUSE_MESSAGE_PURGE:
5003
       case PAUSE_MESSAGE_OPTION:  CrealityDWIN.Popup_Handler(PurgeMore);    break;
5005
       case PAUSE_MESSAGE_OPTION:  CrealityDWIN.Popup_Handler(PurgeMore);    break;
5004
       case PAUSE_MESSAGE_HEAT:    CrealityDWIN.Confirm_Handler(HeaterTime); break;
5006
       case PAUSE_MESSAGE_HEAT:    CrealityDWIN.Confirm_Handler(HeaterTime); break;
5005
       case PAUSE_MESSAGE_WAITING: CrealityDWIN.Draw_Print_Screen();         break;
5007
       case PAUSE_MESSAGE_WAITING: CrealityDWIN.Draw_Print_Screen();         break;

Loading…
取消
儲存