@ -46,8 +46,7 @@ bool flag_ntp = false;
bool flag_update = false ;
CmdArgParser : : CmdArgParser ( const std : : string & p_name , const std : : string & p_description , const std : : string & p_help )
: Glib : : OptionGroup { p_name , p_description , p_help }
{
: Glib : : OptionGroup { p_name , p_description , p_help } {
Glib : : OptionEntry socketIDArg ;
socketIDArg . set_long_name ( " socket-id " ) ;
socketIDArg . set_short_name ( ' s ' ) ;
@ -55,19 +54,18 @@ CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_descr
socketIDArg . set_description ( " Settings manager socket " ) ;
add_entry ( socketIDArg , m_socketID ) ;
}
: : Window CmdArgParser : : GetSocketID ( ) const {
: : Window CmdArgParser : : GetSocketID ( ) const {
return m_socketID ;
}
MainWindow : : MainWindow ( BaseObjectType * obj , Glib : : RefPtr < Gtk : : Builder > const & builder )
: Gtk : : ApplicationWindow ( obj )
, builder { builder } {
this - > settings ( ) ;
: Gtk : : ApplicationWindow ( obj ) , builder { builder } {
this - > builder = builder ;
this - > settings ( ) ;
}
MainWindow : : MainWindow ( Glib : : RefPtr < Gtk : : Builder > const & builder ) {
this - > builder = builder ;
this - > builder = builder ;
this - > settings ( ) ;
}
@ -102,7 +100,6 @@ void MainWindow::settings(){
lblZone - > set_sensitive ( false ) ;
lblTimeZone - > set_sensitive ( false ) ;
lblDateTimeSettingGlob - > set_sensitive ( false ) ;
cbxSynchronizeNtpGlob - > set_sensitive ( false ) ;
lblSynchronizebChkGLob - > set_sensitive ( false ) ;
cbDhcp - > set_sensitive ( false ) ;
txtNtpServer - > set_sensitive ( false ) ;
@ -126,10 +123,11 @@ int MainWindow::check_root(){
void MainWindow : : lacalization ( ) {
txtDate - > set_tooltip_text ( _ ( " Date of \n Format: DD.MM.YYYY " ) ) ;
txtNtpServer - > set_tooltip_text ( _ ( " Enter the name of the ntp-server or its ip-address. \n When entering multiple addresses, separate them with commas. " ) ) ;
lblSynchronizebChkGLob - > set_text ( _ ( " Synchronize via NTP " ) ) ;
lblSynchronizebChkGLob - > set_text ( _ ( " Synchronize via NTP : " ) ) ;
cbDhcp - > append ( _ ( " Default " ) ) ;
cbDhcp - > append ( _ ( " DHCP " ) ) ;
cbDhcp - > append ( _ ( " Manual " ) ) ;
cbDhcp - > append ( _ ( " Disabled " ) ) ;
lblDateTimeSetting - > set_text ( _ ( " Local Configuration " ) ) ;
lblHead - > set_text ( _ ( " Settings the date and time " ) ) ;
lblTime - > set_text ( _ ( " Time " ) ) ;
@ -167,7 +165,6 @@ void MainWindow::flag_block_gui(){
btnHardwareTime - > set_sensitive ( false ) ;
lblTime - > set_sensitive ( false ) ;
lblData - > set_sensitive ( false ) ;
//cbxSynchronizeNtpGlob->set_sensitive(false);
}
if ( flag_timezone = = true ) {
cbRegion - > set_sensitive ( false ) ;
@ -178,14 +175,12 @@ void MainWindow::flag_block_gui(){
cbDhcp - > set_sensitive ( false ) ;
}
if ( flag_ntp = = true ) {
cbxSynchronizeNtpGlob - > set_sensitive ( false ) ;
cbDhcp - > set_sensitive ( false ) ;
txtNtpServer - > set_sensitive ( false ) ;
}
if ( flag_update = = true ) {
lblDateTimeSettingGlob - > set_sensitive ( false ) ;
//lblSynchronizebChkGLob->set_sensitive(false);
cbxSynchronizeNtpGlob - > set_sensitive ( false ) ;
lblTimeZoneGlob - > set_sensitive ( false ) ;
lblRegGlob - > set_sensitive ( false ) ;
cbRegionGlob - > set_sensitive ( false ) ;
@ -204,8 +199,10 @@ void MainWindow::add_CSS(){
styleContext - > add_provider_for_screen ( screen , cssProvider , GTK_STYLE_PROVIDER_PRIORITY_APPLICATION ) ; //add provider for screen in all application
Glib : : RefPtr < Gtk : : StyleContext > context = boxColor - > get_style_context ( ) ;
Glib : : RefPtr < Gtk : : StyleContext > context_lbl_head = lblHead - > get_style_context ( ) ;
//Glib::RefPtr<Gtk::StyleContext> context_button = btnHardwareTime->get_style_context();
context - > add_class ( " cssboxColor1 " ) ;
context_lbl_head - > add_class ( " textHead " ) ;
//context_button->add_class("textHead");
}
void MainWindow : : get_builder ( ) {
@ -214,7 +211,6 @@ void MainWindow::get_builder(){
builder - > get_widget ( " btnUpdateDateTime " , btnUpdateDateTime ) ;
builder - > get_widget ( " btnChooseDate " , btnChooseDate ) ;
builder - > get_widget ( " btnMessClose " , btnMessClose ) ;
builder - > get_widget ( " cbxSynchronizeNtpGlob " , cbxSynchronizeNtpGlob ) ;
builder - > get_widget ( " popCalendar " , popCalendar ) ;
builder - > get_widget ( " numTimeHrs " , numTimeHrs ) ;
builder - > get_widget ( " numTimeMin " , numTimeMin ) ;
@ -269,13 +265,11 @@ bool MainWindow::gui_exit_2(GdkEventAny* event){
}
void MainWindow : : event ( ) {
//cbxSynchronizeNtpGlob->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle));
btnHardwareTime - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : hardware_clock ) ) ;
btnMessClose - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : gui_mess_close ) ) ;
btnMessCloseSudo - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : gui_exit ) ) ;
//cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar));
cbxSynchronizeNtpGlob - > signal_toggled ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : set_ntp_toggle_glob ) ) ;
btnUpdateDateTime - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : wrapper_update_time_date ) ) ;
btnUpdateDateTime - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : update_time_date ) ) ;
btnChooseDate - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : calendar_show ) ) ;
cbDhcp - > signal_changed ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : event_entry_cbDhcp ) ) ;
cbRegion - > signal_changed ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : append_zone ) ) ;
@ -293,29 +287,26 @@ void MainWindow::wind_close_ntp(){
}
void MainWindow : : stop_ntp ( ) {
windowsNnpClose - > hide ( ) ;
string cmd = " SEL_SERVICE= \" systemd-timesyncd \" ; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service; " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
cmd = " SEL_SERVICE= \" ntpd \" ; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
cmd = " SEL_SERVICE= \" ntpdate \" ; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
cmd = " SEL_SERVICE= \" chronyd \" ; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
cmd = " SEL_SERVICE= \" openntpd \" ; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ntpd; " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
cmd = " SEL_SERVICE= \" ptp4l \" ; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
cmd = " SEL_SERVICE= \" phc2sys \" ; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE} " ;
system ( cmd . c_str ( ) ) ;
this - > update_time_date ( ) ;
response_cmd = system ( cmd . c_str ( ) ) ;
}
void MainWindow : : hardware_clock ( ) {
string cmd = " hwclock --systohc " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
}
void MainWindow : : gui_mess_close ( ) {
@ -338,7 +329,6 @@ bool MainWindow::focus_ntp(GdkEventFocus* event){
string str_ntp = txtNtpServer - > get_text ( ) ;
for ( const auto & simvol : array_simvol ) {
if ( str_ntp . find ( simvol ) ! = std : : string : : npos ) {
cout < < simvol < < 2222 < < endl ;
flag_error = true ;
break ;
@ -362,8 +352,9 @@ void MainWindow::event_entry_cbDhcp(){
int activ_index = cbDhcp - > get_active_row_number ( ) ;
if ( str_dhcp . length ( ) ! = 0 ) {
if ( activ_index = = 0 ) {
btnUpdateDateTime - > set_sensitive ( false ) ;
string cmd = " /usr/bin/ubconfig set network NTPSERVERS=default " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
txtNtpServer - > set_sensitive ( false ) ;
cbDhcp - > set_active ( activ_index ) ;
string response = this - > call ( " /usr/bin/ubconfig --source=default get NTPSERVERS_DEFAULT " ) ;
@ -371,19 +362,21 @@ void MainWindow::event_entry_cbDhcp(){
txtNtpServer - > set_text ( response ) ;
}
else if ( activ_index = = 1 ) {
btnUpdateDateTime - > set_sensitive ( false ) ;
string cmd = " /usr/bin/ubconfig set network NTPSERVERS=dhcp " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
txtNtpServer - > set_sensitive ( false ) ;
cbDhcp - > set_active ( activ_index ) ;
txtNtpServer - > set_text ( " " ) ;
}
else if ( activ_index = = 2 ) {
btnUpdateDateTime - > set_sensitive ( false ) ;
txtNtpServer - > set_sensitive ( true ) ;
if ( txtNtpServer - > get_text ( ) . find ( " default " ) ! = std : : string : : npos ) {
txtNtpServer - > set_text ( " " ) ;
}
string str_dhcp = this - > call ( " /usr/bin/ubconfig get network NTPSERVERS " ) ;
if ( ( str_dhcp ! = " " ) & & ( str_dhcp ! = " (null) " ) & & ( str_dhcp . find ( " default " ) = = std : : string : : npos ) ) {
if ( ( str_dhcp . find ( " (null) " ) = = std : : string : : npos ) & & ( str_dhcp . find ( " default " ) = = std : : string : : npos ) ) {
str_dhcp = str_dhcp . substr ( str_dhcp . find ( " = " ) + 1 , str_dhcp . length ( ) ) ;
str_dhcp = str_dhcp . substr ( 0 , str_dhcp . find ( " \n " ) ) ;
if ( str_dhcp ! = " dhcp " & & str_dhcp ! = " (null) " ) {
@ -391,11 +384,20 @@ void MainWindow::event_entry_cbDhcp(){
}
cbDhcp - > set_active ( activ_index ) ;
}
}
else if ( activ_index = = 3 ) {
string cmd = " /usr/bin/ubconfig remove network NTPSERVERS " ;
response_cmd = system ( cmd . c_str ( ) ) ;
txtNtpServer - > set_text ( " " ) ;
txtNtpServer - > set_sensitive ( false ) ;
btnUpdateDateTime - > set_sensitive ( true ) ;
this - > stop_ntp ( ) ;
}
}
else {
string cmd = " /usr/bin/ubconfig set network NTPSERVERS=dhcp " ;
system ( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
cbDhcp - > set_active ( 0 ) ;
}
}
@ -450,22 +452,26 @@ void MainWindow::calendar_show(){
void MainWindow : : enry_dhcp_mess ( ) {
string str_dhcp = this - > call ( " /usr/bin/ubconfig get network NTPSERVERS " ) ;
if ( ( str_dhcp ! = " " ) & & ( str_dhcp ! = " (null) " ) ) {
cbxSynchronizeNtpGlob - > set_active ( 1 ) ;
this - > set_ntp_toggle_glob ( ) ;
if ( str_dhcp . find ( " (null) " ) = = std : : string : : npos ) {
btnUpdateDateTime - > set_sensitive ( false ) ;
str_dhcp = str_dhcp . substr ( str_dhcp . find ( " = " ) + 1 , str_dhcp . length ( ) ) ;
str_dhcp = str_dhcp . substr ( 0 , str_dhcp . find ( " \n " ) ) ;
if ( str_dhcp = = " dhcp " ) {
cbDhcp - > set_active ( 1 ) ;
txtNtpServer - > set_text ( " " ) ;
txtNtpServer - > set_sensitive ( false ) ;
}
else if ( str_dhcp = = " default " ) {
btnUpdateDateTime - > set_sensitive ( false ) ;
cbDhcp - > set_active ( 0 ) ;
txtNtpServer - > set_text ( " " ) ;
string response = this - > call ( " /usr/bin/ubconfig --source=default get NTPSERVERS_DEFAULT " ) ;
this - > str_remove ( response , " \n " ) ;
txtNtpServer - > set_text ( response ) ;
txtNtpServer - > set_sensitive ( false ) ;
}
else {
btnUpdateDateTime - > set_sensitive ( false ) ;
if ( str_dhcp = = " " ) {
lblMessage - > set_text ( _ ( " Enter DHCP! " ) ) ;
mess_dchp - > show ( ) ;
@ -482,9 +488,10 @@ void MainWindow::enry_dhcp_mess(){
}
}
else {
cbxSynchronizeNtpGlob - > set_active ( 0 ) ;
cbDhcp - > set_sensitive ( 0 ) ;
txtNtpServer - > set_sensitive ( 0 ) ;
cbDhcp - > set_active ( 3 ) ;
txtNtpServer - > set_text ( " " ) ;
txtNtpServer - > set_sensitive ( false ) ;
btnUpdateDateTime - > set_sensitive ( true ) ;
}
}
@ -546,7 +553,7 @@ void MainWindow::enter_zone(){
str_region = reg_text ;
string cmd = " " ;
cmd = " ubconfig --target system set clock ZONE= " + str_region + " / " + str_zone ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
}
else {
str_zone = " " ;
@ -584,7 +591,7 @@ void MainWindow::enter_zone_glob(){
if ( ! ( zone_text . empty ( ) ) ) {
//str_zoneGlob = zone_text.substr(zone_text.find(") ")+2,zone_text.length());
string cmd = " /usr/bin/ubconfig --target global set clock ZONE= " + reg_text + " / " + zone_text ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
}
else {
str_zoneGlob = " " ;
@ -597,22 +604,6 @@ void MainWindow::enter_zone_glob(){
}
}
void MainWindow : : set_ntp_toggle_glob ( ) {
bool flag = cbxSynchronizeNtpGlob - > get_active ( ) ;
if ( flag = = false ) {
system ( " /usr/bin/ubconfig remove network NTPSERVERS " ) ;
cbDhcp - > set_sensitive ( false ) ;
txtNtpServer - > set_sensitive ( false ) ;
}
else {
cbDhcp - > set_sensitive ( true ) ;
int activ_index = cbDhcp - > get_active_row_number ( ) ;
if ( activ_index = = 2 ) {
txtNtpServer - > set_sensitive ( true ) ;
}
}
}
void MainWindow : : append_region_zone ( string region , string zone , Gtk : : ComboBoxText * tmpCbReg , Gtk : : ComboBoxText * tmpCbZone ) {
str_region = region ;
@ -628,7 +619,6 @@ void MainWindow::append_region_zone(string region, string zone, Gtk::ComboBoxTex
}
index + = 1 ;
}
index = 0 ;
string zone_mixing = " " ;
string path_reg_zone = " " ;
@ -695,17 +685,6 @@ void MainWindow::append_zone_glob(){
}
cbZoneGlob - > set_active ( 0 ) ;
}
void MainWindow : : wrapper_update_time_date ( ) {
string cmd = " pidof systemd-timesyncd ntpd chronyd ntpdate openntpd ptp4l phc2sys " ;
string response = this - > call ( cmd ) ;
if ( response . length ( ) = = 0 ) {
this - > update_time_date ( ) ;
}
else {
windowsNnpClose - > show ( ) ;
}
}
void MainWindow : : update_time_date ( ) {
//this->enter_zone();
@ -732,7 +711,7 @@ void MainWindow::update_time_date(){
if ( str_data = = str_data_entry ) {
cmd = " date +%Y%m%d -s \" " + to_string ( year ) +
str_month + str_day + " \" " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
txtDate - > set_text ( str_data ) ;
year = 0 ;
month = 0 ;
@ -752,7 +731,7 @@ void MainWindow::update_time_date(){
cmd = " date +%T -s \" " +
to_string ( hour ) + " : " + to_string ( minute )
+ " : " + to_string ( ltm - > tm_sec ) + " \" " ;
system( cmd . c_str ( ) ) ;
response_cmd= system( cmd . c_str ( ) ) ;
}
void MainWindow : : post_entry_data ( ) {
@ -838,6 +817,7 @@ void MainWindow::read_file(){
}
in1 . close ( ) ;
}
this - > sort_zone ( & zone_local , & zone ) ;
time_reg_map . insert ( { key_reg , zone } ) ;
time_reg_map_local . insert ( { key_reg , zone_local } ) ;
} } } }
@ -847,6 +827,56 @@ void MainWindow::read_file(){
}
}
void MainWindow : : sort_zone ( vector < string > * time_reg_map_local , vector < string > * time_reg_map ) {
string str_j = " " ;
int j_i ;
string str_j_1 = " " ;
int j_i_1 ;
int size_vec = time_reg_map_local - > size ( ) ;
for ( int i = 0 ; i < size_vec ; i + + ) {
for ( int j = 0 ; j < size_vec - 1 ; j + + ) {
str_j = ( * time_reg_map_local ) [ j ] ;
str_j = str_j . substr ( 5 , str_j . find ( " ) " ) - 5 ) ;
if ( str_j [ 1 ] = = ' 0 ' ) {
str_j . replace ( 1 , 1 , " 0 " ) ;
}
if ( str_j . find ( " + " ) ! = std : : string : : npos ) {
str_j . replace ( 0 , 1 , " + " ) ;
j_i = stoi ( str_j ) ;
}
else {
str_j . replace ( 0 , 1 , " - " ) ;
j_i = stoi ( str_j ) ;
j_i = - j_i ;
}
str_j_1 = ( * time_reg_map_local ) [ j + 1 ] ;
str_j_1 = str_j_1 . substr ( 5 , str_j_1 . find ( " ) " ) - 5 ) ;
if ( str_j_1 [ 1 ] = = ' 0 ' ) {
str_j_1 . replace ( 1 , 1 , " 0 " ) ;
}
if ( str_j_1 . find ( " + " ) ! = std : : string : : npos ) {
str_j_1 . replace ( 0 , 1 , " + " ) ;
j_i_1 = stoi ( str_j_1 ) ;
}
else {
str_j_1 . replace ( 0 , 1 , " - " ) ;
j_i_1 = stoi ( str_j_1 ) ;
j_i_1 = - j_i_1 ;
}
if ( j_i > j_i_1 ) {
string b = ( * time_reg_map_local ) [ j ] ;
( * time_reg_map_local ) [ j ] = ( * time_reg_map_local ) [ j + 1 ] ;
( * time_reg_map_local ) [ j + 1 ] = b ;
b = ( * time_reg_map ) [ j ] ;
( * time_reg_map ) [ j ] = ( * time_reg_map ) [ j + 1 ] ;
( * time_reg_map ) [ j + 1 ] = b ;
}
}
}
}
string MainWindow : : zone_file_read ( string zone ) {
if ( zone . length ( ) = = 1 ) {
return " " ;
@ -894,8 +924,9 @@ vector<std::string> MainWindow::split(const std::string &s, char delim){
}
SettingsPlug : : SettingsPlug ( : : Window p_socketID , Glib : : RefPtr < Gtk : : Builder > builder )
: Gtk : : Plug { p_socketID }
{
: Gtk : : Plug { p_socketID } {
MainWindow * wnd = nullptr ;
builder - > get_widget_derived ( " window " , wnd ) ;
builder - > get_widget ( " plugBox " , plugBox ) ;
plugBox - > get_parent ( ) - > remove ( * plugBox ) ;
add ( * plugBox ) ;
@ -903,11 +934,11 @@ SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> build
}
void help ( ) {
g_print ( " Usage: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update] \n " ) ;
g_print ( " Options: \n " ) ;
g_print ( " --lock-timezone Disable timezone field editing \n " ) ;
g_print ( " --lock-ntp Disable ntp field editing \n " ) ;
g_print ( " --lock-datetime Disable datetime field editing \n " ) ;
g_print ( " --lock-update Disable save changes \n " ) ;
g_print ( gettext ( " Usage: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update] \n " ) ) ;
g_print ( gettext ( " Options: \n " ) ) ;
g_print ( gettext ( " --lock-timezone Disable timezone field editing \n " ) ) ;
g_print ( gettext ( " --lock-ntp Disable ntp field editing \n " ) ) ;
g_print ( gettext ( " --lock-datetime Disable datetime field editing \n " ) ) ;
g_print ( gettext ( " --lock-update Disable save changes \n " ) ) ;
}