mirror of
https://github.com/usatiuk/cardboy.git
synced 2025-10-28 23:27:49 +01:00
better lockscreen notifications
This commit is contained in:
@@ -130,12 +130,14 @@ private:
|
|||||||
if (!notifications.empty() && (upPressed || downPressed)) {
|
if (!notifications.empty() && (upPressed || downPressed)) {
|
||||||
const std::size_t count = notifications.size();
|
const std::size_t count = notifications.size();
|
||||||
lastNotificationInteractionMs = clock.millis();
|
lastNotificationInteractionMs = clock.millis();
|
||||||
navPressed = true;
|
|
||||||
if (count > 1) {
|
if (count > 1) {
|
||||||
if (upPressed)
|
if (upPressed && selectedNotification > 0) {
|
||||||
selectedNotification = (selectedNotification + count - 1) % count;
|
selectedNotification--;
|
||||||
else if (downPressed)
|
navPressed = true;
|
||||||
selectedNotification = (selectedNotification + 1) % count;
|
} else if (downPressed && selectedNotification < count - 1) {
|
||||||
|
selectedNotification++;
|
||||||
|
navPressed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,8 +502,10 @@ private:
|
|||||||
const int arrowsTotalWide = arrowWidth * 2 + arrowSpacing;
|
const int arrowsTotalWide = arrowWidth * 2 + arrowSpacing;
|
||||||
const int arrowX = counterX + (counterWidth - arrowsTotalWide) / 2;
|
const int arrowX = counterX + (counterWidth - arrowsTotalWide) / 2;
|
||||||
const int arrowY = cardMarginTop + cardPadding + textLineHeight + 1;
|
const int arrowY = cardMarginTop + cardPadding + textLineHeight + 1;
|
||||||
drawArrow(framebuffer, arrowX, arrowY, true, scaleSmall);
|
if (selectedNotification > 0)
|
||||||
drawArrow(framebuffer, arrowX + arrowWidth + arrowSpacing, arrowY, false, scaleSmall);
|
drawArrow(framebuffer, arrowX, arrowY, true, scaleSmall);
|
||||||
|
if (selectedNotification < notifications.size() - 1)
|
||||||
|
drawArrow(framebuffer, arrowX + arrowWidth + arrowSpacing, arrowY, false, scaleSmall);
|
||||||
const int arrowHeight = font16x8::kGlyphHeight * scaleSmall;
|
const int arrowHeight = font16x8::kGlyphHeight * scaleSmall;
|
||||||
cardHeight = std::max(cardHeight, arrowY + arrowHeight - cardMarginTop);
|
cardHeight = std::max(cardHeight, arrowY + arrowHeight - cardMarginTop);
|
||||||
}
|
}
|
||||||
@@ -524,28 +528,13 @@ private:
|
|||||||
const int summaryX = (framebuffer.width() - summaryWidth) / 2;
|
const int summaryX = (framebuffer.width() - summaryWidth) / 2;
|
||||||
const int summaryY = cardMarginTop;
|
const int summaryY = cardMarginTop;
|
||||||
font16x8::drawText(framebuffer, summaryX, summaryY, summary, scaleSmall, true, 1);
|
font16x8::drawText(framebuffer, summaryX, summaryY, summary, scaleSmall, true, 1);
|
||||||
|
|
||||||
if (notifications.size() > 1) {
|
|
||||||
const int arrowWidth = font16x8::kGlyphWidth * scaleSmall;
|
|
||||||
const int arrowSpacing = std::max(1, scaleSmall);
|
|
||||||
const int arrowsTotalWide = arrowWidth * 2 + arrowSpacing;
|
|
||||||
const int arrowX = (framebuffer.width() - arrowsTotalWide) / 2;
|
|
||||||
const int arrowY = summaryY + textLineHeight + 1;
|
|
||||||
drawArrow(framebuffer, arrowX, arrowY, true, scaleSmall);
|
|
||||||
drawArrow(framebuffer, arrowX + arrowWidth + arrowSpacing, arrowY, false, scaleSmall);
|
|
||||||
const int arrowHeight = font16x8::kGlyphHeight * scaleSmall;
|
|
||||||
cardHeight = std::max(cardHeight, arrowY + arrowHeight - cardMarginTop);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const int defaultTimeY = (framebuffer.height() - font16x8::kGlyphHeight * scaleTime) / 2 - 8;
|
const int defaultTimeY = (framebuffer.height() - font16x8::kGlyphHeight * scaleTime) / 2 - 8;
|
||||||
int timeY = defaultTimeY;
|
const int minTimeY = (cardHeight > 0) ? (cardMarginTop + cardHeight + 12) : 16;
|
||||||
if (cardHeight > 0)
|
const int maxTimeY = std::max(minTimeY, framebuffer.height() - font16x8::kGlyphHeight * scaleTime - 48);
|
||||||
timeY = cardMarginTop + cardHeight + 16;
|
const int timeY = std::clamp(defaultTimeY, minTimeY, maxTimeY);
|
||||||
const int minTimeY = (cardHeight > 0) ? (cardMarginTop + cardHeight + 12) : 16;
|
|
||||||
const int maxTimeY = std::max(minTimeY, framebuffer.height() - font16x8::kGlyphHeight * scaleTime - 48);
|
|
||||||
timeY = std::clamp(timeY, minTimeY, maxTimeY);
|
|
||||||
|
|
||||||
char hoursMinutes[6];
|
char hoursMinutes[6];
|
||||||
std::snprintf(hoursMinutes, sizeof(hoursMinutes), "%02d:%02d", snap.hour24, snap.minute);
|
std::snprintf(hoursMinutes, sizeof(hoursMinutes), "%02d:%02d", snap.hour24, snap.minute);
|
||||||
|
|||||||
Reference in New Issue
Block a user