Skip to content

Commit

Permalink
Fix build.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mysticial committed Jan 29, 2025
1 parent 2e82b94 commit 9fa675f
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 8 deletions.
4 changes: 4 additions & 0 deletions Common/Cpp/ListenerSet.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
#include <map>
#include <mutex>

//#include <iostream>
//using std::cout;
//using std::endl;

namespace PokemonAutomation{


Expand Down
11 changes: 11 additions & 0 deletions Common/Cpp/Options/EditableTableOption.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,13 @@ class EditableTableOption : public ConfigOption{
}
return ret;
}
template <typename RowType, typename Lambda>
void run_on_all_rows(Lambda function){
ReadSpinLock lg(m_current_lock);
for (auto& item : m_current){
function(static_cast<RowType&>(*item));
}
}

void clear();

Expand Down Expand Up @@ -169,6 +176,10 @@ class EditableTableOption_t : public EditableTableOption{
std::vector<RowSnapshotType> snapshot() const{
return EditableTableOption::snapshot<RowType, RowSnapshotType>();
}
template <typename Lambda>
void run_on_all_rows(Lambda function){
EditableTableOption::run_on_all_rows<RowType>(std::move(function));
}

virtual std::unique_ptr<EditableTableRow> make_row() override{
return std::unique_ptr<EditableTableRow>(new RowType(*this));
Expand Down
15 changes: 15 additions & 0 deletions Common/Cpp/Options/StringOption.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ struct StringCell::Data{
const std::string m_default;
const std::string m_placeholder_text;

std::atomic<bool> m_locked;

mutable SpinLock m_lock;
std::string m_current;

Expand Down Expand Up @@ -54,6 +56,19 @@ const std::string StringCell::default_value() const{
return m_data->m_default;
}


bool StringCell::is_locked() const{
return m_data->m_locked.load(std::memory_order_relaxed);
}
void StringCell::set_locked(bool locked){
if (locked == is_locked()){
return;
}
m_data->m_locked.store(locked, std::memory_order_relaxed);
report_visibility_changed();
}


StringCell::operator std::string() const{
ReadSpinLock lg(m_data->m_lock);
return m_data->m_current;
Expand Down
3 changes: 3 additions & 0 deletions Common/Cpp/Options/StringOption.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ class StringCell : public ConfigOption{
const std::string& placeholder_text() const;
const std::string default_value() const;

bool is_locked() const;
void set_locked(bool locked);

operator std::string() const;
void set(std::string x);

Expand Down
14 changes: 8 additions & 6 deletions Common/Qt/Options/EditableTableWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,14 @@ EditableTableWidget::EditableTableWidget(QWidget& parent, EditableTableOption& v
QVBoxLayout* layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);

QLabel* label = new QLabel(QString::fromStdString(value.label()), this);
label->setWordWrap(true);
label->setTextFormat(Qt::RichText);
label->setTextInteractionFlags(Qt::TextBrowserInteraction);
label->setOpenExternalLinks(true);
layout->addWidget(label);
if (!value.label().empty()){
QLabel* label = new QLabel(QString::fromStdString(value.label()), this);
label->setWordWrap(true);
label->setTextFormat(Qt::RichText);
label->setTextInteractionFlags(Qt::TextBrowserInteraction);
label->setOpenExternalLinks(true);
layout->addWidget(label);
}

m_table = new AutoHeightTableWidget(this);
layout->addWidget(m_table, 0, Qt::AlignTop);
Expand Down
17 changes: 15 additions & 2 deletions Common/Qt/Options/StringWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
#include <QLineEdit>
#include "StringWidget.h"

//#include <iostream>
//using std::cout;
//using std::endl;

namespace PokemonAutomation{


Expand All @@ -32,7 +36,7 @@ StringCellWidget::StringCellWidget(QWidget& parent, StringCell& value)
{
this->setPlaceholderText(QString::fromStdString(value.placeholder_text()));

this->setReadOnly(value.lock_mode() == LockMode::READ_ONLY);
this->setReadOnly(value.lock_mode() == LockMode::READ_ONLY || m_value.is_locked());
if (m_value.is_password()){
this->setEchoMode(QLineEdit::PasswordEchoOnEdit);
}
Expand All @@ -54,6 +58,11 @@ void StringCellWidget::value_changed(void* object){
update_value();
}, Qt::QueuedConnection);
}
void StringCellWidget::visibility_changed(){
QMetaObject::invokeMethod(this, [this]{
setReadOnly(m_value.lock_mode() == LockMode::READ_ONLY || m_value.is_locked());
}, Qt::QueuedConnection);
}



Expand Down Expand Up @@ -98,7 +107,11 @@ void StringOptionWidget::value_changed(void* object){
update_value();
}, Qt::QueuedConnection);
}

void StringOptionWidget::visibility_changed(){
QMetaObject::invokeMethod(m_box, [this]{
m_box->setReadOnly(m_value.is_locked());
}, Qt::QueuedConnection);
}



Expand Down
2 changes: 2 additions & 0 deletions Common/Qt/Options/StringWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class StringCellWidget : public QLineEdit, public ConfigWidget{

virtual void update_value() override;
virtual void value_changed(void* object) override;
virtual void visibility_changed() override;

private:
StringCell& m_value;
Expand All @@ -36,6 +37,7 @@ class StringOptionWidget : public QWidget, public ConfigWidget{

virtual void update_value() override;
virtual void value_changed(void* object) override;
virtual void visibility_changed() override;

private:
StringOption& m_value;
Expand Down

0 comments on commit 9fa675f

Please sign in to comment.