diff --git a/Userland/Applications/Welcome/WelcomeWidget.cpp b/Userland/Applications/Welcome/WelcomeWidget.cpp index 3f4916f277..c31fd2d5e4 100644 --- a/Userland/Applications/Welcome/WelcomeWidget.cpp +++ b/Userland/Applications/Welcome/WelcomeWidget.cpp @@ -8,7 +8,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -76,30 +77,30 @@ WelcomeWidget::WelcomeWidget() }; open_and_parse_readme_file(); - open_and_parse_tips_file(); + if (auto result = open_and_parse_tips_file(); result.is_error()) { + auto error = String::formatted("Opening \"{}/tips.txt\" failed: {}", Core::StandardPaths::documents_directory(), result.error()); + m_tip_label->set_text(error); + warnln(error); + } + set_random_tip(); } -void WelcomeWidget::open_and_parse_tips_file() +ErrorOr WelcomeWidget::open_and_parse_tips_file() { - auto file = Core::File::construct("/home/anon/Documents/tips.txt"); - if (!file->open(Core::OpenMode::ReadOnly)) { - m_tip_label->set_text("~/Documents/tips.txt has gone missing!"); - return; - } + auto path = String::formatted("{}/tips.txt", Core::StandardPaths::documents_directory()); + auto file = TRY(Core::Stream::File::open(path, Core::Stream::OpenMode::Read)); + auto buffered_file = TRY(Core::Stream::BufferedFile::create(move(file))); + Array buffer; - while (file->can_read_line()) { - auto line = file->read_line(); - auto* ch = line.characters(); - switch (*ch) { - case '\n': - case '\r': - case '\0': - case '#': + while (TRY(buffered_file->can_read_line())) { + auto line = TRY(buffered_file->read_line(buffer)); + if (line.starts_with('#') || line.is_empty()) continue; - } m_tips.append(line); } + + return {}; } void WelcomeWidget::open_and_parse_readme_file() diff --git a/Userland/Applications/Welcome/WelcomeWidget.h b/Userland/Applications/Welcome/WelcomeWidget.h index 427324e5e8..4d304ce27e 100644 --- a/Userland/Applications/Welcome/WelcomeWidget.h +++ b/Userland/Applications/Welcome/WelcomeWidget.h @@ -21,7 +21,7 @@ private: virtual void paint_event(GUI::PaintEvent&) override; void set_random_tip(); - void open_and_parse_tips_file(); + ErrorOr open_and_parse_tips_file(); void open_and_parse_readme_file(); RefPtr m_close_button;