From 23f6e2e843a29f06216e1021144d6ba1e10cc944 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 15 May 2023 10:47:25 +0600 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BA=D0=BE=D0=B9=20ntp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-datetime.cc | 34 ++++++++++++++++++++++++++++++--- source/ubl-settings-datetime.h | 2 ++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-datetime.cc b/source/ubl-settings-datetime.cc index 841fbe8..882c9f5 100644 --- a/source/ubl-settings-datetime.cc +++ b/source/ubl-settings-datetime.cc @@ -893,10 +893,38 @@ vector MainWindow::find_all(string &str_ntp, string substr) { return sub_index; } +bool MainWindow::check_num_ntp(string &str_ntp) { + int code_ascii = 0; + bool flag_is_num = false; + for (size_t index = 0; index < str_ntp.length(); index++) { + code_ascii = static_cast(str_ntp[index]); + if (code_ascii >= 48 && code_ascii <= 57 ) { + flag_is_num = true; + break; + } + } + return flag_is_num; +} + +bool MainWindow::check_string_ntp(string &str_ntp) { + int code_ascii = 0; + bool flag_is_str = false; + for (size_t index = 0; index < str_ntp.length(); index++) { + code_ascii = static_cast(str_ntp[index]); + if ((code_ascii >= 65 && code_ascii <= 90) || (code_ascii >= 97 && code_ascii <= 122)) { + flag_is_str = true; + break; + } + } + return flag_is_str; +} + bool MainWindow::check_ntp(string &str_ntp) { + bool flag_is_num = this->check_num_ntp(str_ntp); + bool flag_is_str = this->check_string_ntp(str_ntp); vector sub_index = this->find_all(str_ntp, "."); - if (sub_index.size() == 1) { - int index_point = sub_index[0]; + if (sub_index.size() != 0 && flag_is_str) { + int index_point = sub_index[sub_index.size()-1]; int len_str_ntp = str_ntp.length(); if (((len_str_ntp-index_point) >= 2) && (index_point > 2)) { return false; @@ -905,7 +933,7 @@ bool MainWindow::check_ntp(string &str_ntp) { return true; } } - else if (sub_index.size() == 3) { + else if (sub_index.size() == 3 && (flag_is_num && flag_is_str == false)) { int index_str_ntp = sub_index[0]; int index_str_ntp_1 = sub_index[1]; int index_str_ntp_2 = sub_index[2]; diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index aa8322b..974a814 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -309,6 +309,8 @@ class MainWindow : public Gtk::ApplicationWindow { void settings(); void flag_block_gui(); void add_CSS(); + bool check_string_ntp(string &str_ntp); + bool check_num_ntp(string &str_ntp); void get_builder(); void event(); void gui_mess_close();