Skip to content

Commit

Permalink
New option to set network time to user-set time
Browse files Browse the repository at this point in the history
  • Loading branch information
nedex committed Nov 21, 2020
1 parent 08dbaa8 commit 725f308
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 6 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## [1.2.0] - 2020-11-21

#### *The future-proof update*

### Added

- New option to set network time to user-set time

## [1.1.1] - 2020-09-20

### Updated
Expand All @@ -22,6 +30,7 @@

- First release

[1.2.0]: https://github.com/nedex/QuickNTP/compare/1.1.1...1.2.0
[1.1.1]: https://github.com/nedex/QuickNTP/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/nedex/QuickNTP/compare/1.0.0...1.1.0
[1.0.0]: https://github.com/nedex/QuickNTP/releases/tag/1.0.0
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ include $(DEVKITPRO)/libnx/switch_rules
# NACP building is skipped as well.
#---------------------------------------------------------------------------------
APP_TITLE := QuickNTP
APP_VERSION := 1.1.1
APP_VERSION := 1.2.0

TARGET := $(notdir $(CURDIR))
BUILD := build
Expand Down
57 changes: 52 additions & 5 deletions source/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class NtpGui : public tsl::Gui {
if (setNetworkSystemClock(ntpTime)) {
setMessage("Synced with %s", srv);
} else {
setMessage("Unable to set system clock.");
setMessage("Unable to set network clock.");
}
} else {
setMessage("Error: %s", client->getErrorMessage().c_str());
Expand All @@ -58,11 +58,34 @@ class NtpGui : public tsl::Gui {
delete client;
}

void setNetworkTimeAsUser() {
time_t userTime, netTime;

Result rs = timeGetCurrentTime(TimeType_UserSystemClock, (u64*)&userTime);
if (R_FAILED(rs)) {
setMessage("GetTimeUser %x", rs);
return;
}

std::string usr = "User time!";
std::string gr8 = "";
rs = timeGetCurrentTime(TimeType_NetworkSystemClock, (u64*)&netTime);
if (!R_FAILED(rs) && netTime < userTime) {
gr8 = " Great Scott!";
}

if (setNetworkSystemClock(userTime)) {
setMessage(usr.append(gr8).c_str());
} else {
setMessage("Unable to set network clock.");
}
}

void getOffset() {
time_t currentTime;
Result rs = timeGetCurrentTime(TimeType_UserSystemClock, (u64*)&currentTime);
Result rs = timeGetCurrentTime(TimeType_NetworkSystemClock, (u64*)&currentTime);
if (R_FAILED(rs)) {
setMessage("timeGetCurrentTime %x", rs);
setMessage("GetTimeNetwork %x", rs);
return;
}

Expand Down Expand Up @@ -117,10 +140,18 @@ class NtpGui : public tsl::Gui {
}

virtual tsl::elm::Element* createUI() override {
auto frame = new tsl::elm::OverlayFrame("QuickNTP", "by NedEX - v1.1.1");
auto frame = new tsl::elm::CustomOverlayFrame("QuickNTP", "by NedEX - v1.2.0");

auto list = new tsl::elm::List();

list->setClickListener([this](u64 keys) {
if (keys & (KEY_UP | KEY_DOWN | KEY_LEFT | KEY_RIGHT)) {
setMessage();
return true;
}
return false;
});

list->addItem(new tsl::elm::CategoryHeader("Pick server | \uE0E0 Sync | \uE0E3 Offset"));

auto* trackbar = new tsl::elm::NamedStepTrackBar("\uE017", NTPSERVERS[0]);
Expand Down Expand Up @@ -156,9 +187,25 @@ class NtpGui : public tsl::Gui {
list->addItem(new tsl::elm::CustomDrawer([](tsl::gfx::Renderer* renderer, s32 x, s32 y, s32 w, s32 h) {
renderer->drawString("Gets the seconds offset with the selected server.\n\n\uE016 A value of ± 3 seconds is acceptable.", false, x + 20, y + 20, 15, renderer->a(tsl::style::color::ColorDescription));
}),
70);

auto* setToInternalItem = new tsl::elm::ListItem("User-set time");
setToInternalItem->setClickListener([this](u64 keys) {
if (keys & KEY_A) {
return operationBlock([&]() {
setNetworkTimeAsUser();
});
}
return false;
});
list->addItem(setToInternalItem);

list->addItem(new tsl::elm::CustomDrawer([](tsl::gfx::Renderer* renderer, s32 x, s32 y, s32 w, s32 h) {
renderer->drawString("Sets the network time to the user-set time.", false, x + 20, y + 20, 15, renderer->a(tsl::style::color::ColorDescription));
}),
50);

list->addItem(new tsl::elm::CustomDrawerUnscissored([& message = Message](tsl::gfx::Renderer* renderer, s32 x, s32 y, s32 w, s32 h) {
list->addItem(new tsl::elm::CustomDrawerUnscissored([&message = Message](tsl::gfx::Renderer* renderer, s32 x, s32 y, s32 w, s32 h) {
if (!message.empty()) {
renderer->drawString(message.c_str(), false, x + 5, tsl::cfg::FramebufferHeight - 100, 20, renderer->a(tsl::style::color::ColorText));
}
Expand Down
14 changes: 14 additions & 0 deletions source/tesla-ext.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,18 @@ class CustomDrawerUnscissored : public Element {
private:
std::function<void(gfx::Renderer*, s32 x, s32 y, s32 w, s32 h)> m_renderFunc;
};

class CustomOverlayFrame : public OverlayFrame {
public:
CustomOverlayFrame(const std::string& title, const std::string& subtitle) : OverlayFrame(title, subtitle) {}

virtual void layout(u16 parentX, u16 parentY, u16 parentWidth, u16 parentHeight) override {
this->setBoundaries(parentX, parentY, parentWidth, parentHeight);

if (this->m_contentElement != nullptr) {
this->m_contentElement->setBoundaries(parentX + 35, parentY + 95, parentWidth - 85, parentHeight - 73 - 95);
this->m_contentElement->invalidate();
}
}
};
} // namespace tsl::elm

0 comments on commit 725f308

Please sign in to comment.