thigns
This commit is contained in:
parent
ab097e2370
commit
875b9c7dd1
|
@ -1,12 +1,20 @@
|
||||||
|
#include <fmt/core.h>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
fn Config::getInstance()->const Config& {
|
using rfl::Result;
|
||||||
|
|
||||||
|
fn Config::getInstance()->Config {
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
const string path = string(getenv("LOCALAPPDATA")) + "\\draconis++\\config.toml";
|
const string path = string(getenv("LOCALAPPDATA")) + "\\draconis++\\config.toml";
|
||||||
#else
|
#else
|
||||||
const string path = string(getenv("HOME")) + "/.config/draconis++/config.toml";
|
const string path = string(getenv("HOME")) + "/.config/draconis++/config.toml";
|
||||||
#endif
|
#endif
|
||||||
// ReSharper disable once CppDFAMemoryLeak
|
const Result<Config> result = rfl::toml::load<Config>(path);
|
||||||
static const Config* INSTANCE = new Config(rfl::toml::load<Config>(path).value());
|
|
||||||
return *INSTANCE;
|
if (result)
|
||||||
}
|
return result.value();
|
||||||
|
|
||||||
|
fmt::println("Failed to load config file: {}", result.error().value().what());
|
||||||
|
return {};
|
||||||
|
}
|
|
@ -22,7 +22,7 @@ struct Weather {
|
||||||
string api_key;
|
string api_key;
|
||||||
string units;
|
string units;
|
||||||
|
|
||||||
[[nodiscard]] fn getWeatherInfo() const -> WeatherOutput;
|
[[nodiscard]] fn getWeatherInfo() const->WeatherOutput;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Config {
|
struct Config {
|
||||||
|
@ -30,5 +30,5 @@ struct Config {
|
||||||
rfl::Field<"now_playing", NowPlaying> now_playing = NowPlaying();
|
rfl::Field<"now_playing", NowPlaying> now_playing = NowPlaying();
|
||||||
rfl::Field<"weather", Weather> weather = Weather();
|
rfl::Field<"weather", Weather> weather = Weather();
|
||||||
|
|
||||||
static fn getInstance() -> const Config&;
|
static fn getInstance()->Config;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
using rfl::Error;
|
using rfl::Error;
|
||||||
using rfl::Nothing;
|
|
||||||
using rfl::Result;
|
using rfl::Result;
|
||||||
|
|
||||||
// Function to read cache from file
|
// Function to read cache from file
|
||||||
|
|
|
@ -48,7 +48,7 @@ fn GetDate()->string {
|
||||||
fn main()->i32 {
|
fn main()->i32 {
|
||||||
using std::future;
|
using std::future;
|
||||||
|
|
||||||
const Config& config = Config::getInstance();
|
const Config config = Config::getInstance();
|
||||||
|
|
||||||
auto weatherFuture =
|
auto weatherFuture =
|
||||||
std::async(std::launch::async, [&config]() { return config.weather.get().getWeatherInfo(); });
|
std::async(std::launch::async, [&config]() { return config.weather.get().getWeatherInfo(); });
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
|
||||||
fn GetMemInfo()->u64 {
|
fn GetMemInfo() -> u64 {
|
||||||
u64 mem = 0;
|
u64 mem = 0;
|
||||||
GetPhysicallyInstalledSystemMemory(&mem);
|
GetPhysicallyInstalledSystemMemory(&mem);
|
||||||
return mem * 1024;
|
return mem * 1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetNowPlaying()->string {
|
fn GetNowPlaying() -> string {
|
||||||
using namespace winrt::Windows::Media::Control;
|
using namespace winrt::Windows::Media::Control;
|
||||||
using namespace winrt::Windows::Foundation;
|
using namespace winrt::Windows::Foundation;
|
||||||
|
|
||||||
|
@ -27,9 +27,7 @@ fn GetNowPlaying()->string {
|
||||||
|
|
||||||
if (const Session currentSession = sessionManager.GetCurrentSession()) {
|
if (const Session currentSession = sessionManager.GetCurrentSession()) {
|
||||||
// Try to get the media properties asynchronously
|
// Try to get the media properties asynchronously
|
||||||
const IAsyncOperation<MediaProperties> mediaPropertiesOp =
|
const MediaProperties mediaProperties = currentSession.TryGetMediaPropertiesAsync().get();
|
||||||
currentSession.TryGetMediaPropertiesAsync();
|
|
||||||
const MediaProperties mediaProperties = mediaPropertiesOp.get();
|
|
||||||
|
|
||||||
// Convert the hstring title to string
|
// Convert the hstring title to string
|
||||||
return to_string(mediaProperties.Title());
|
return to_string(mediaProperties.Title());
|
||||||
|
@ -40,13 +38,14 @@ fn GetNowPlaying()->string {
|
||||||
} catch (...) { return "Failed to get media properties."; }
|
} catch (...) { return "Failed to get media properties."; }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetRegistryValue(const HKEY& hKey, const string& subKey, const string& valueName)->string {
|
fn GetRegistryValue(const HKEY& hKey, const string& subKey, const string& valueName) -> string {
|
||||||
HKEY key = nullptr;
|
HKEY key = nullptr;
|
||||||
if (RegOpenKeyExA(hKey, subKey.c_str(), 0, KEY_READ, &key) != ERROR_SUCCESS)
|
if (RegOpenKeyExA(hKey, subKey.c_str(), 0, KEY_READ, &key) != ERROR_SUCCESS)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
DWORD dataSize = 0;
|
DWORD dataSize = 0;
|
||||||
if (RegQueryValueExA(key, valueName.c_str(), nullptr, nullptr, nullptr, &dataSize) != ERROR_SUCCESS) {
|
if (RegQueryValueExA(key, valueName.c_str(), nullptr, nullptr, nullptr, &dataSize) !=
|
||||||
|
ERROR_SUCCESS) {
|
||||||
RegCloseKey(key);
|
RegCloseKey(key);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -72,7 +71,7 @@ fn GetRegistryValue(const HKEY& hKey, const string& subKey, const string& valueN
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn GetOSVersion()->string {
|
fn GetOSVersion() -> string {
|
||||||
string productName = GetRegistryValue(
|
string productName = GetRegistryValue(
|
||||||
HKEY_LOCAL_MACHINE, R"(SOFTWARE\Microsoft\Windows NT\CurrentVersion)", "ProductName"
|
HKEY_LOCAL_MACHINE, R"(SOFTWARE\Microsoft\Windows NT\CurrentVersion)", "ProductName"
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue