mirror of
https://github.com/hyprwm/hyprlock.git
synced 2026-05-08 22:08:02 +02:00
update config options to allow backwards compatibility
This commit is contained in:
parent
3db32efed1
commit
53684cb6f2
3 changed files with 52 additions and 42 deletions
|
|
@ -283,16 +283,18 @@ void CConfigManager::init() {
|
|||
m_config.addSpecialConfigValue("input-field", "inner_color", Hyprlang::INT{0xFFDDDDDD});
|
||||
m_config.addSpecialConfigValue("input-field", "outer_color", GRADIENTCONFIG("0xFF111111"));
|
||||
m_config.addSpecialConfigValue("input-field", "outline_thickness", Hyprlang::INT{4});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:dots_spacing", Hyprlang::FLOAT{0.2});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:dots_rounding", Hyprlang::INT{-1});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:dots_format", Hyprlang::STRING{""});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:size", Hyprlang::FLOAT{0.25});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:center", Hyprlang::INT{1});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:toggle_password_visibility", Hyprlang::INT{0});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:hide_eye", Hyprlang::INT{0});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:eye_margin", Hyprlang::INT{16});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:eye_size", Hyprlang::FLOAT{0.25});
|
||||
m_config.addSpecialConfigValue("input-field", "password-appearance:eye_placement", Hyprlang::STRING{"right"});
|
||||
m_config.addSpecialConfigValue("input-field", "dots_size", Hyprlang::FLOAT{0.25});
|
||||
m_config.addSpecialConfigValue("input-field", "dots_center", Hyprlang::INT{1});
|
||||
m_config.addSpecialConfigValue("input-field", "dots_spacing", Hyprlang::FLOAT{0.2});
|
||||
m_config.addSpecialConfigValue("input-field", "dots_rounding", Hyprlang::INT{-1});
|
||||
m_config.addSpecialConfigValue("input-field", "dots_text_format", Hyprlang::STRING{""});
|
||||
m_config.addSpecialConfigValue("input-field", "password_size", Hyprlang::FLOAT{0.4});
|
||||
m_config.addSpecialConfigValue("input-field", "password_center", Hyprlang::INT{1});
|
||||
m_config.addSpecialConfigValue("input-field", "toggle_password_visibility", Hyprlang::INT{0});
|
||||
m_config.addSpecialConfigValue("input-field", "hide_eye", Hyprlang::INT{0});
|
||||
m_config.addSpecialConfigValue("input-field", "eye_margin", Hyprlang::INT{16});
|
||||
m_config.addSpecialConfigValue("input-field", "eye_size", Hyprlang::FLOAT{0.25});
|
||||
m_config.addSpecialConfigValue("input-field", "eye_placement", Hyprlang::STRING{"right"});
|
||||
m_config.addSpecialConfigValue("input-field", "fade_on_empty", Hyprlang::INT{1});
|
||||
m_config.addSpecialConfigValue("input-field", "fade_timeout", Hyprlang::INT{2000});
|
||||
m_config.addSpecialConfigValue("input-field", "font_color", Hyprlang::INT{0xFF000000});
|
||||
|
|
@ -470,16 +472,18 @@ std::vector<CConfigManager::SWidgetConfig> CConfigManager::getWidgetConfigs() {
|
|||
{"inner_color", m_config.getSpecialConfigValue("input-field", "inner_color", k.c_str())},
|
||||
{"outer_color", m_config.getSpecialConfigValue("input-field", "outer_color", k.c_str())},
|
||||
{"outline_thickness", m_config.getSpecialConfigValue("input-field", "outline_thickness", k.c_str())},
|
||||
{"password-appearance:dots_spacing", m_config.getSpecialConfigValue("input-field", "password-appearance:dots_spacing", k.c_str())},
|
||||
{"password-appearance:dots_rounding", m_config.getSpecialConfigValue("input-field", "password-appearance:dots_rounding", k.c_str())},
|
||||
{"password-appearance:dots_format", m_config.getSpecialConfigValue("input-field", "password-appearance:dots_format", k.c_str())},
|
||||
{"password-appearance:size", m_config.getSpecialConfigValue("input-field", "password-appearance:size", k.c_str())},
|
||||
{"password-appearance:center", m_config.getSpecialConfigValue("input-field", "password-appearance:center", k.c_str())},
|
||||
{"password-appearance:toggle_password_visibility", m_config.getSpecialConfigValue("input-field", "password-appearance:toggle_password_visibility", k.c_str())},
|
||||
{"password-appearance:hide_eye", m_config.getSpecialConfigValue("input-field", "password-appearance:hide_eye", k.c_str())},
|
||||
{"password-appearance:eye_margin", m_config.getSpecialConfigValue("input-field", "password-appearance:eye_margin", k.c_str())},
|
||||
{"password-appearance:eye_size", m_config.getSpecialConfigValue("input-field", "password-appearance:eye_size", k.c_str())},
|
||||
{"password-appearance:eye_placement", m_config.getSpecialConfigValue("input-field", "password-appearance:eye_placement", k.c_str())},
|
||||
{"dots_size", m_config.getSpecialConfigValue("input-field", "dots_size", k.c_str())},
|
||||
{"dots_center", m_config.getSpecialConfigValue("input-field", "dots_center", k.c_str())},
|
||||
{"dots_spacing", m_config.getSpecialConfigValue("input-field", "dots_spacing", k.c_str())},
|
||||
{"dots_rounding", m_config.getSpecialConfigValue("input-field", "dots_rounding", k.c_str())},
|
||||
{"dots_text_format", m_config.getSpecialConfigValue("input-field", "dots_text_format", k.c_str())},
|
||||
{"password_size", m_config.getSpecialConfigValue("input-field", "password_size", k.c_str())},
|
||||
{"password_center", m_config.getSpecialConfigValue("input-field", "password_center", k.c_str())},
|
||||
{"toggle_password_visibility", m_config.getSpecialConfigValue("input-field", "toggle_password_visibility", k.c_str())},
|
||||
{"hide_eye", m_config.getSpecialConfigValue("input-field", "hide_eye", k.c_str())},
|
||||
{"eye_margin", m_config.getSpecialConfigValue("input-field", "eye_margin", k.c_str())},
|
||||
{"eye_size", m_config.getSpecialConfigValue("input-field", "eye_size", k.c_str())},
|
||||
{"eye_placement", m_config.getSpecialConfigValue("input-field", "eye_placement", k.c_str())},
|
||||
{"fade_on_empty", m_config.getSpecialConfigValue("input-field", "fade_on_empty", k.c_str())},
|
||||
{"fade_timeout", m_config.getSpecialConfigValue("input-field", "fade_timeout", k.c_str())},
|
||||
{"font_color", m_config.getSpecialConfigValue("input-field", "font_color", k.c_str())},
|
||||
|
|
|
|||
|
|
@ -43,16 +43,18 @@ void CPasswordInputField::configure(const std::unordered_map<std::string, std::a
|
|||
halign = std::any_cast<Hyprlang::STRING>(props.at("halign"));
|
||||
valign = std::any_cast<Hyprlang::STRING>(props.at("valign"));
|
||||
outThick = std::any_cast<Hyprlang::INT>(props.at("outline_thickness"));
|
||||
password.dots.spacing = std::any_cast<Hyprlang::FLOAT>(props.at("password-appearance:dots_spacing"));
|
||||
password.dots.rounding = std::any_cast<Hyprlang::INT>(props.at("password-appearance:dots_rounding"));
|
||||
password.dots.format = std::any_cast<Hyprlang::STRING>(props.at("password-appearance:dots_format"));
|
||||
password.size = std::any_cast<Hyprlang::FLOAT>(props.at("password-appearance:size"));
|
||||
password.center = std::any_cast<Hyprlang::INT>(props.at("password-appearance:center"));
|
||||
password.allowToggle = std::any_cast<Hyprlang::INT>(props.at("password-appearance:toggle_password_visibility"));
|
||||
password.eye.hide = std::any_cast<Hyprlang::INT>(props.at("password-appearance:hide_eye"));
|
||||
password.eye.margin = std::any_cast<Hyprlang::INT>(props.at("password-appearance:eye_margin"));
|
||||
password.eye.size = std::any_cast<Hyprlang::FLOAT>(props.at("password-appearance:eye_size"));
|
||||
password.eye.placement = std::any_cast<Hyprlang::STRING>(props.at("password-appearance:eye_placement"));
|
||||
password.dots.size = std::any_cast<Hyprlang::FLOAT>(props.at("dots_size"));
|
||||
password.dots.center = std::any_cast<Hyprlang::INT>(props.at("dots_center"));
|
||||
password.dots.spacing = std::any_cast<Hyprlang::FLOAT>(props.at("dots_spacing"));
|
||||
password.dots.rounding = std::any_cast<Hyprlang::INT>(props.at("dots_rounding"));
|
||||
password.dots.format = std::any_cast<Hyprlang::STRING>(props.at("dots_text_format"));
|
||||
password.text.size = std::any_cast<Hyprlang::FLOAT>(props.at("password_size"));
|
||||
password.text.center = std::any_cast<Hyprlang::INT>(props.at("password_center"));
|
||||
password.allowToggle = std::any_cast<Hyprlang::INT>(props.at("toggle_password_visibility"));
|
||||
password.eye.hide = std::any_cast<Hyprlang::INT>(props.at("hide_eye"));
|
||||
password.eye.margin = std::any_cast<Hyprlang::INT>(props.at("eye_margin"));
|
||||
password.eye.size = std::any_cast<Hyprlang::FLOAT>(props.at("eye_size"));
|
||||
password.eye.placement = std::any_cast<Hyprlang::STRING>(props.at("eye_placement"));
|
||||
fadeOnEmpty = std::any_cast<Hyprlang::INT>(props.at("fade_on_empty"));
|
||||
fadeTimeoutMs = std::any_cast<Hyprlang::INT>(props.at("fade_timeout"));
|
||||
hiddenInputState.enabled = std::any_cast<Hyprlang::INT>(props.at("hide_input"));
|
||||
|
|
@ -77,11 +79,14 @@ void CPasswordInputField::configure(const std::unordered_map<std::string, std::a
|
|||
RASSERT(false, "Missing property for CPasswordInputField: {}", e.what()); //
|
||||
}
|
||||
|
||||
Debug::log(LOG, "allow toggle: {}", password.text.size);
|
||||
|
||||
configPos = pos;
|
||||
colorState.font = colorConfig.font;
|
||||
|
||||
pos = posFromHVAlign(viewport, configSize, pos, halign, valign);
|
||||
password.size = std::clamp(password.size, 0.2f, 0.8f);
|
||||
password.dots.size = std::clamp(password.dots.size, 0.2f, 0.8f);
|
||||
password.text.size = std::clamp(password.text.size, 0.2f, 0.8f);
|
||||
password.dots.spacing = std::clamp(password.dots.spacing, -1.f, 1.f);
|
||||
|
||||
colorConfig.caps = colorConfig.caps->m_bIsFallback ? colorConfig.fail : colorConfig.caps;
|
||||
|
|
@ -104,7 +109,7 @@ void CPasswordInputField::configure(const std::unordered_map<std::string, std::a
|
|||
request.type = CAsyncResourceGatherer::eTargetType::TARGET_TEXT;
|
||||
request.props["font_family"] = fontFamily;
|
||||
request.props["color"] = colorConfig.font;
|
||||
request.props["font_size"] = (int)(std::nearbyint(configSize.y * password.size * 0.5f) * 2.f);
|
||||
request.props["font_size"] = (int)(std::nearbyint(configSize.y * password.text.size * 0.5f) * 2.f);
|
||||
|
||||
g_pRenderer->asyncResourceGatherer->requestAsyncAssetPreload(request);
|
||||
}
|
||||
|
|
@ -210,7 +215,7 @@ void CPasswordInputField::updatePassword() {
|
|||
request.type = CAsyncResourceGatherer::eTargetType::TARGET_TEXT;
|
||||
request.props["font_family"] = fontFamily;
|
||||
request.props["color"] = colorConfig.font;
|
||||
request.props["font_size"] = (int)(std::nearbyint(configSize.y * password.size * 0.5f) * 2.f);
|
||||
request.props["font_size"] = (int)(std::nearbyint(configSize.y * password.text.size * 0.5f) * 2.f);
|
||||
request.callback = [REF = m_self]() { assetReadyCallback(REF); };
|
||||
|
||||
password.text.pendingResourceID = textResourceID;
|
||||
|
|
@ -345,7 +350,7 @@ bool CPasswordInputField::draw(const SRenderData& data) {
|
|||
double padding = (inputFieldBox.h - passSize.y) / 2.0;
|
||||
double areaWidth = inputFieldBox.w - (padding * 2) - eyeOffset;
|
||||
|
||||
double xstart = password.center ? (inputFieldBox.w - passSize.x - eyeOffset) / 2.0 : padding;
|
||||
double xstart = password.text.center ? (inputFieldBox.w - passSize.x - eyeOffset) / 2.0 : padding;
|
||||
if (passSize.x > areaWidth)
|
||||
xstart -= (passSize.x - areaWidth) / 2.0;
|
||||
if (password.eye.placement == "left")
|
||||
|
|
@ -362,7 +367,7 @@ bool CPasswordInputField::draw(const SRenderData& data) {
|
|||
} else
|
||||
forceReload = true;
|
||||
} else {
|
||||
const int RECTPASSSIZE = std::nearbyint(inputFieldBox.h * password.size * 0.5f) * 2.f;
|
||||
const int RECTPASSSIZE = std::nearbyint(inputFieldBox.h * password.dots.size * 0.5f) * 2.f;
|
||||
Vector2D passSize{RECTPASSSIZE, RECTPASSSIZE};
|
||||
int passSpacing = std::floor(passSize.x * password.dots.spacing);
|
||||
|
||||
|
|
@ -389,7 +394,7 @@ bool CPasswordInputField::draw(const SRenderData& data) {
|
|||
const double CURRWIDTH = ((passSize.x + passSpacing) * CURRDOTS) - passSpacing;
|
||||
|
||||
// Calculate starting x-position to ensure dots stay centered within the input field
|
||||
double xstart = password.center ? ((DOTAREAWIDTH - CURRWIDTH) / 2.0) + DOTPAD : DOTPAD;
|
||||
double xstart = password.dots.center ? ((DOTAREAWIDTH - CURRWIDTH) / 2.0) + DOTPAD : DOTPAD;
|
||||
|
||||
if (CURRDOTS > MAXDOTS)
|
||||
xstart = (inputFieldBox.w + MAXDOTS * (passSize.x + passSpacing) - passSpacing - 2 * CURRWIDTH - eyeOffset) / 2.0;
|
||||
|
|
@ -401,7 +406,7 @@ bool CPasswordInputField::draw(const SRenderData& data) {
|
|||
if (password.dots.rounding == -1)
|
||||
password.dots.rounding = passSize.x / 2.0;
|
||||
else if (password.dots.rounding == -2)
|
||||
password.dots.rounding = rounding == -1 ? passSize.x / 2.0 : rounding * password.size;
|
||||
password.dots.rounding = rounding == -1 ? passSize.x / 2.0 : rounding * password.dots.size;
|
||||
|
||||
for (int i = 0; i < CURRDOTS; ++i) {
|
||||
if (i < DOTFLOORED - MAXDOTS)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
#include "IWidget.hpp"
|
||||
#include "../../helpers/Color.hpp"
|
||||
#include "../../helpers/Math.hpp"
|
||||
#include "../../core/Timer.hpp"
|
||||
#include "Shadowable.hpp"
|
||||
#include "../../config/ConfigDataValues.hpp"
|
||||
|
|
@ -69,12 +68,12 @@ class CPasswordInputField : public IWidget {
|
|||
int outThick, rounding;
|
||||
|
||||
struct {
|
||||
bool allowToggle = false;
|
||||
bool center = false;
|
||||
float size = 0.25;
|
||||
bool show = false;
|
||||
bool allowToggle = false;
|
||||
bool show = false;
|
||||
|
||||
struct {
|
||||
float size = 0.25;
|
||||
bool center = false;
|
||||
std::string content = "";
|
||||
std::string resourceID = "";
|
||||
std::string pendingResourceID = "";
|
||||
|
|
@ -84,6 +83,8 @@ class CPasswordInputField : public IWidget {
|
|||
|
||||
struct {
|
||||
PHLANIMVAR<float> currentAmount;
|
||||
float size = 0.25;
|
||||
bool center = false;
|
||||
float spacing = 0;
|
||||
int rounding = 0;
|
||||
std::string format = "";
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue