When STATUS_EXPIRE_SECONDS is 0, hide the position. (#10081)

Some users may prefer to hide the position updates on the `LIGHTWEIGHT_UI` altogether. This leads to an even less cluttered display (it also saves on SPI traffic and one byte of RAM).
This commit is contained in:
Marcio Teixeira 2018-03-14 01:44:30 -06:00 committed by Scott Lahteine
parent e7a61de8af
commit c24dbcbfe1
46 changed files with 185 additions and 34 deletions

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -673,6 +673,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -678,6 +678,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -667,6 +667,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -667,6 +667,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -667,6 +667,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -667,6 +667,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -667,6 +667,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -667,6 +667,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -672,6 +672,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -667,6 +667,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -665,6 +665,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -666,6 +666,9 @@
* Since LIGHTWEIGHT_UI has limited space, the position and status
* message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
* length of time to display the status message before clearing.
*
* Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
* This will prevent position updates from being displayed.
*/
//#define LIGHTWEIGHT_UI
#if ENABLED(LIGHTWEIGHT_UI)

View file

@ -622,7 +622,7 @@ void ST7920_Lite_Status_Screen::draw_status_message(const char *str) {
// Trim whitespace at the end of the str, as for some reason
// messages like "Card Inserted" are padded with many spaces
while (str_len > 0 && str[str_len - 1] == ' ') str_len--;
while (str_len && str[str_len - 1] == ' ') str_len--;
if (str_len <= lcd_len) {
// It all fits on the LCD without scrolling
@ -765,8 +765,15 @@ bool ST7920_Lite_Status_Screen::blink_changed() {
return true;
}
#ifndef STATUS_EXPIRE_SECONDS
#define STATUS_EXPIRE_SECONDS 20
#endif
void ST7920_Lite_Status_Screen::update_status_or_position(bool forceUpdate) {
static uint8_t countdown = 0;
#if STATUS_EXPIRE_SECONDS
static uint8_t countdown = 0;
#endif
/**
* There is only enough room in the display for either the
@ -779,51 +786,60 @@ void ST7920_Lite_Status_Screen::update_status_or_position(bool forceUpdate) {
* countdown > 1 -- Show status
* countdown = 1 -- Show status, until movement
* countdown = 0 -- Show position
*
* If STATUS_EXPIRE_SECONDS is zero, the position display
* will be disabled and only the status will be shown.
*/
if (forceUpdate || status_changed()) {
#if ENABLED(STATUS_MESSAGE_SCROLLING)
status_scroll_pos = 0;
#endif
#ifndef STATUS_EXPIRE_SECONDS
#define STATUS_EXPIRE_SECONDS 20
#if STATUS_EXPIRE_SECONDS
countdown = lcd_status_message[0] ? STATUS_EXPIRE_SECONDS : 0;
#endif
countdown = lcd_strlen(lcd_status_message) ? STATUS_EXPIRE_SECONDS : 0;
draw_status_message(lcd_status_message);
blink_changed(); // Clear changed flag
}
else if (countdown > 1 && blink_changed()) {
countdown--;
#if !STATUS_EXPIRE_SECONDS
#if ENABLED(STATUS_MESSAGE_SCROLLING)
draw_status_message(lcd_status_message);
else
draw_status_message(lcd_status_message);
#endif
}
else if (countdown > 0 && blink_changed()) {
if (position_changed()) {
#else
else if (countdown > 1 && blink_changed()) {
countdown--;
forceUpdate = true;
}
#if ENABLED(STATUS_MESSAGE_SCROLLING)
draw_status_message(lcd_status_message);
#endif
}
if (countdown == 0 && (forceUpdate || position_changed() ||
#if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
blink_changed()
#endif
)) {
draw_position(
current_position[X_AXIS],
current_position[Y_AXIS],
current_position[Z_AXIS],
#if ENABLED(DISABLE_REDUCED_ACCURACY_WARNING)
true
#else
axis_known_position[X_AXIS] &&
axis_known_position[Y_AXIS] &&
axis_known_position[Z_AXIS]
#if ENABLED(STATUS_MESSAGE_SCROLLING)
draw_status_message(lcd_status_message);
#endif
);
}
}
else if (countdown > 0 && blink_changed()) {
if (position_changed()) {
countdown--;
forceUpdate = true;
}
#if ENABLED(STATUS_MESSAGE_SCROLLING)
draw_status_message(lcd_status_message);
#endif
}
if (countdown == 0 && (forceUpdate || position_changed() ||
#if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
blink_changed()
#endif
)) {
draw_position(
current_position[X_AXIS],
current_position[Y_AXIS],
current_position[Z_AXIS],
#if ENABLED(DISABLE_REDUCED_ACCURACY_WARNING)
true
#else
axis_known_position[X_AXIS] &&
axis_known_position[Y_AXIS] &&
axis_known_position[Z_AXIS]
#endif
);
}
#endif
}
void ST7920_Lite_Status_Screen::update_progress(const bool forceUpdate) {