This commit is contained in:
zxkmm 2025-04-03 23:09:40 +08:00
parent 4bbe1175c1
commit de07691420
25 changed files with 45 additions and 19 deletions

View File

@ -203,6 +203,7 @@ BleRecentEntryDetailView::BleRecentEntryDetailView(NavigationView& nav, const Bl
nav,
packetFileBuffer,
64,
0,
[this, packetToSave](std::string& buffer) {
on_save_file(buffer, packetToSave);
});
@ -471,6 +472,7 @@ BLERxView::BLERxView(NavigationView& nav)
nav_,
filterBuffer,
64,
0,
[this](std::string& buffer) {
on_filter_change(buffer);
});
@ -493,6 +495,7 @@ BLERxView::BLERxView(NavigationView& nav)
nav,
listFileBuffer,
64,
0,
[this](std::string& buffer) {
on_save_file(buffer);
});

View File

@ -399,6 +399,7 @@ BLETxView::BLETxView(NavigationView& nav)
nav,
packetFileBuffer,
64,
0,
[this](std::string& buffer) {
on_save_file(buffer);
});

View File

@ -94,6 +94,7 @@ APRSTXView::APRSTXView(NavigationView& nav) {
nav,
payload,
30,
0,
[this](std::string& s) {
text_payload.set(s);
});

View File

@ -499,7 +499,7 @@ FileSaveView::FileSaveView(
button_edit_path.on_select = [this](Button&) {
buffer_ = path_.string();
text_prompt(nav_, buffer_, max_filename_length,
text_prompt(nav_, buffer_, max_filename_length,0,
[this](std::string&) {
path_ = buffer_;
refresh_widgets();
@ -508,7 +508,7 @@ FileSaveView::FileSaveView(
button_edit_name.on_select = [this](Button&) {
buffer_ = file_.string();
text_prompt(nav_, buffer_, max_filename_length,
text_prompt(nav_, buffer_, max_filename_length,0,
[this](std::string&) {
file_ = buffer_;
refresh_widgets();
@ -566,7 +566,7 @@ void FileManagerView::on_rename(std::string_view hint) {
cursor_pos = pos;
text_prompt(
nav_, name_buffer, cursor_pos, max_filename_length,
nav_, name_buffer, cursor_pos, max_filename_length,0,
[this](std::string& renamed) {
auto renamed_path = fs::path{renamed};
rename_file(get_selected_full_path(), current_path / renamed_path);
@ -640,7 +640,7 @@ void FileManagerView::on_clean() {
void FileManagerView::on_new_dir() {
name_buffer = "";
text_prompt(nav_, name_buffer, max_filename_length, [this](std::string& dir_name) {
text_prompt(nav_, name_buffer, max_filename_length,0, [this](std::string& dir_name) {
make_new_directory(current_path / dir_name);
reload_current(true);
});
@ -671,7 +671,7 @@ void FileManagerView::on_paste() {
void FileManagerView::on_new_file() {
name_buffer = "";
text_prompt(nav_, name_buffer, max_filename_length, [this](std::string& file_name) {
text_prompt(nav_, name_buffer, max_filename_length,0, [this](std::string& file_name) {
make_new_file(current_path / file_name);
reload_current(true);
});

View File

@ -240,7 +240,7 @@ void FrequencyManagerView::on_edit_freq() {
void FrequencyManagerView::on_edit_desc() {
temp_buffer_ = current_entry().description;
text_prompt(nav_, temp_buffer_, freqman_max_desc_size, [this](std::string& new_desc) {
text_prompt(nav_, temp_buffer_, freqman_max_desc_size,0, [this](std::string& new_desc) {
auto entry = current_entry();
entry.description = std::move(new_desc);
db_.replace_entry(current_index(), entry);
@ -250,7 +250,7 @@ void FrequencyManagerView::on_edit_desc() {
void FrequencyManagerView::on_add_category() {
temp_buffer_.clear();
text_prompt(nav_, temp_buffer_, 20, [this](std::string& new_name) {
text_prompt(nav_, temp_buffer_, 20,0, [this](std::string& new_name) {
if (!new_name.empty()) {
create_freqman_file(new_name);
refresh_categories();

View File

@ -153,7 +153,7 @@ void POCSAGTXView::paint(Painter&) {
}
void POCSAGTXView::on_set_text(NavigationView& nav) {
text_prompt(nav, buffer, MAX_POCSAG_LENGTH);
text_prompt(nav, buffer, MAX_POCSAG_LENGTH,0);
}
POCSAGTXView::POCSAGTXView(

View File

@ -65,6 +65,7 @@ RDSPSNView::RDSPSNView(
nav,
PSN,
8,
0,
[this](std::string& s) {
text_psn.set(s);
});
@ -86,6 +87,7 @@ RDSRadioTextView::RDSRadioTextView(
nav,
radiotext,
28,
0,
[this](std::string& s) {
text_radiotext.set(s);
});

View File

@ -82,7 +82,7 @@ ReconSetupViewMain::ReconSetupViewMain(NavigationView& nav, Rect parent_rect, st
};
button_choose_output_name.on_select = [this, &nav](Button&) {
text_prompt(nav, _output_file, 28, [this](std::string& buffer) {
text_prompt(nav, _output_file, 28, 0,[this](std::string& buffer) {
_output_file = buffer;
button_choose_output_name.set_text(_output_file);
});

View File

@ -617,6 +617,7 @@ void TextEditorView::show_edit_line() {
edit_line_buffer_,
viewer.col(),
max_edit_length,
0,
[this](std::string& buffer) {
auto range = file_->line_range(viewer.line());
if (!range)

View File

@ -105,7 +105,7 @@ void bind(TextField& field, T& value, NavigationView& nav, Fn fn = Fn{}) {
// Capture a new string and make the lambda mutable so it can be modified.
field.on_select = [&nav, buf = std::string{}](TextField& tf) mutable {
buf = tf.get_text();
text_prompt(nav, buf, /*max_length*/ 255,
text_prompt(nav, buf, /*max_length*/ 255,0,
[&tf](std::string& str) {
tf.set_text(str);
});

View File

@ -131,6 +131,7 @@ ADSBCallsignView::ADSBCallsignView(
nav,
callsign,
8,
0,
[this](std::string& s) {
button_callsign.set_text(s);
});

View File

@ -227,6 +227,7 @@ void HopperView::save_list() {
nav_,
filename_buffer,
64,
0,
[this](std::string& value) {
auto path = hopper_dir / (value + ".PHOP");

View File

@ -189,6 +189,7 @@ void LCRView::on_button_set_am(NavigationView& nav, int16_t button_id) {
nav,
litteral[button_id],
7,
0,
[this, button_id](std::string& buffer) {
texts[button_id].set(buffer);
});
@ -257,6 +258,7 @@ LCRView::LCRView(NavigationView& nav) {
nav,
rgsb,
4,
0,
[this](std::string& buffer) {
button_set_rgsb.set_text(buffer);
});

View File

@ -311,6 +311,7 @@ LGEView::LGEView(NavigationView& nav) {
nav,
nickname,
15,
0,
[this](std::string& buffer) {
button_text.set_text(buffer);
});

View File

@ -212,6 +212,7 @@ MetronomeTapTempoView::MetronomeTapTempoView(NavigationView& nav, uint16_t bpm)
nav_,
input_buffer,
3,
1,
[this](std::string& buffer) {
if (buffer.empty()) {
return;

View File

@ -99,7 +99,7 @@ static msg_t loopthread_fn(void* arg) {
}
void MorseView::on_set_text(NavigationView& nav) {
text_prompt(nav, buffer, 28);
text_prompt(nav, buffer, 28,0);
}
void MorseView::focus() {

View File

@ -210,6 +210,7 @@ OOKEditorAppView::OOKEditorAppView(NavigationView& nav)
nav,
outputFileBuffer,
64,
0,
[this](std::string& buffer) {
on_save_file(buffer);
});
@ -263,6 +264,7 @@ OOKEditorAppView::OOKEditorAppView(NavigationView& nav)
nav,
ook_data.payload,
100,
1,
[this](std::string& s) {
text_payload.set(s);
draw_waveform();

View File

@ -83,6 +83,7 @@ OOKBruteView::OOKBruteView(NavigationView& nav)
nav_,
text_input_buffer,
8, // currently longest is princeton
1, /*enter number*/
[this](std::string& buffer) {
field_start.set_value(atoi(buffer.c_str()));
validate_start_stop();
@ -100,6 +101,7 @@ OOKBruteView::OOKBruteView(NavigationView& nav)
nav_,
text_input_buffer,
8, // currently longest is princeton
0,/*enter number*/
[this](std::string& buffer) {
field_stop.set_value(atoi(buffer.c_str()));
validate_start_stop();

View File

@ -122,6 +122,7 @@ bool PlaylistEditorView::on_create_ppl() {
nav_,
current_ppl_name_buffer,
100,
0,
[&](std::string& s) {
current_ppl_name_buffer = s;
@ -307,6 +308,8 @@ PlaylistItemEditView::PlaylistItemEditView(
nav_,
delay_str,
100,
0,
1, /* enter number */
[&](std::string& s) {
delay_ = atoi(s.c_str());
field_delay.set_value(delay_);

View File

@ -330,7 +330,7 @@ RemoteAppView::RemoteAppView(
field_title.on_select = [this, &nav](TextField&) {
temp_buffer_ = model_.name;
text_prompt(nav_, temp_buffer_, text_edit_max, [this](std::string& new_name) {
text_prompt(nav_, temp_buffer_, text_edit_max, 0,[this](std::string& new_name) {
model_.name = new_name;
refresh_ui();
set_needs_save();
@ -339,7 +339,7 @@ RemoteAppView::RemoteAppView(
field_filename.on_select = [this, &nav](TextField&) {
temp_buffer_ = remote_path_.stem().string();
text_prompt(nav_, temp_buffer_, text_edit_max, [this](std::string& new_name) {
text_prompt(nav_, temp_buffer_, text_edit_max,0, [this](std::string& new_name) {
rename_remote(new_name);
refresh_ui();
});

View File

@ -56,7 +56,7 @@ SpectrumInputTextView::~SpectrumInputTextView() {
}
void SpectrumInputTextView::on_set_text(NavigationView& nav) {
text_prompt(nav, buffer, 300);
text_prompt(nav, buffer, 300,0);
}
void SpectrumInputTextView::focus() {

View File

@ -32,7 +32,8 @@ namespace ui {
AlphanumView::AlphanumView(
NavigationView& nav,
std::string& str,
size_t max_length)
size_t max_length,
uint8_t enter_mode)
: TextEntryView(nav, str, max_length) {
size_t n;
@ -76,7 +77,7 @@ AlphanumView::AlphanumView(
n++;
}
set_mode(mode);
set_mode(enter_mode);
button_mode.on_select = [this](Button&) {
set_mode(mode + 1);

View File

@ -37,7 +37,7 @@ namespace ui {
class AlphanumView : public TextEntryView {
public:
AlphanumView(NavigationView& nav, std::string& str, size_t max_length);
AlphanumView(NavigationView& nav, std::string& str, size_t max_length,uint8_t enter_mode);
AlphanumView(const AlphanumView&) = delete;
AlphanumView(AlphanumView&&) = delete;

View File

@ -31,8 +31,9 @@ void text_prompt(
NavigationView& nav,
std::string& str,
size_t max_length,
uint8_t mode,
std::function<void(std::string&)> on_done) {
text_prompt(nav, str, str.length(), max_length, on_done);
text_prompt(nav, str, str.length(), max_length, mode,on_done);
}
void text_prompt(
@ -40,8 +41,9 @@ void text_prompt(
std::string& str,
uint32_t cursor_pos,
size_t max_length,
uint8_t mode,
std::function<void(std::string&)> on_done) {
auto te_view = nav.push<AlphanumView>(str, max_length);
auto te_view = nav.push<AlphanumView>(str, max_length,mode);
te_view->set_cursor(cursor_pos);
te_view->on_changed = [on_done](std::string& value) {
if (on_done)

View File

@ -62,6 +62,7 @@ void text_prompt(
NavigationView& nav,
std::string& str,
size_t max_length,
uint8_t mode,
std::function<void(std::string&)> on_done = nullptr);
void text_prompt(
@ -69,6 +70,7 @@ void text_prompt(
std::string& str,
uint32_t cursor_pos,
size_t max_length,
uint8_t mode, // enter mode: 123 abc etc
std::function<void(std::string&)> on_done = nullptr);
} /* namespace ui */