Merge pull request 'fix and reload project in repo' (#1) from develop into master
Reviewed-on: Igor1/ubl-settings-datetime#1pull/17/head
commit
e0116e3cf5
|
After Width: | Height: | Size: 44 KiB |
@ -1,54 +0,0 @@
|
|||||||
(UTC +00) Lome
|
|
||||||
(UTC +00) Bissau
|
|
||||||
(UTC +00) Sao_Tome
|
|
||||||
(UTC +00) Abidjan
|
|
||||||
(UTC +00) Accra
|
|
||||||
(UTC +00) Banjul
|
|
||||||
(UTC +00) Conakry
|
|
||||||
(UTC +00) Ouagadougou
|
|
||||||
(UTC +00) Nouakchott
|
|
||||||
(UTC +00) Timbuktu
|
|
||||||
(UTC +00) Dakar
|
|
||||||
(UTC +00) Monrovia
|
|
||||||
(UTC +00) Freetown
|
|
||||||
(UTC +00) Bamako
|
|
||||||
(UTC +01) El_Aaiun
|
|
||||||
(UTC +01) Lagos
|
|
||||||
(UTC +01) Porto-Novo
|
|
||||||
(UTC +01) Algiers
|
|
||||||
(UTC +01) Douala
|
|
||||||
(UTC +01) Brazzaville
|
|
||||||
(UTC +01) Libreville
|
|
||||||
(UTC +01) Casablanca
|
|
||||||
(UTC +01) Niamey
|
|
||||||
(UTC +01) Tunis
|
|
||||||
(UTC +01) Luanda
|
|
||||||
(UTC +01) Malabo
|
|
||||||
(UTC +01) Ceuta
|
|
||||||
(UTC +01) Kinshasa
|
|
||||||
(UTC +01) Bangui
|
|
||||||
(UTC +01) Ndjamena
|
|
||||||
(UTC +02) Juba
|
|
||||||
(UTC +02) Maseru
|
|
||||||
(UTC +02) Khartoum
|
|
||||||
(UTC +02) Lubumbashi
|
|
||||||
(UTC +02) Tripoli
|
|
||||||
(UTC +02) Mbabane
|
|
||||||
(UTC +02) Kigali
|
|
||||||
(UTC +02) Gaborone
|
|
||||||
(UTC +02) Windhoek
|
|
||||||
(UTC +02) Maputo
|
|
||||||
(UTC +02) Cairo
|
|
||||||
(UTC +02) Johannesburg
|
|
||||||
(UTC +02) Bujumbura
|
|
||||||
(UTC +02) Lusaka
|
|
||||||
(UTC +02) Harare
|
|
||||||
(UTC +02) Blantyre
|
|
||||||
(UTC +03) Djibouti
|
|
||||||
(UTC +03) Dar_es_Salaam
|
|
||||||
(UTC +03) Kampala
|
|
||||||
(UTC +03) Addis_Ababa
|
|
||||||
(UTC +03) Mogadishu
|
|
||||||
(UTC +03) Asmera
|
|
||||||
(UTC +03) Asmara
|
|
||||||
(UTC +03) Nairobi
|
|
||||||
@ -1,147 +0,0 @@
|
|||||||
(UTC -10) Atka
|
|
||||||
(UTC -10) Adak
|
|
||||||
(UTC -09) Anchorage
|
|
||||||
(UTC -09) Metlakatla
|
|
||||||
(UTC -09) Juneau
|
|
||||||
(UTC -09) Sitka
|
|
||||||
(UTC -09) Nome
|
|
||||||
(UTC -09) Yakutat
|
|
||||||
(UTC -08) Tijuana
|
|
||||||
(UTC -08) Santa_Isabel
|
|
||||||
(UTC -08) Vancouver
|
|
||||||
(UTC -08) Ensenada
|
|
||||||
(UTC -08) Los_Angeles
|
|
||||||
(UTC -07) Ciudad_Juarez
|
|
||||||
(UTC -07) Dawson
|
|
||||||
(UTC -07) Hermosillo
|
|
||||||
(UTC -07) Phoenix
|
|
||||||
(UTC -07) Whitehorse
|
|
||||||
(UTC -07) Edmonton
|
|
||||||
(UTC -07) Creston
|
|
||||||
(UTC -07) Inuvik
|
|
||||||
(UTC -07) Mazatlan
|
|
||||||
(UTC -07) Shiprock
|
|
||||||
(UTC -07) Yellowknife
|
|
||||||
(UTC -07) Fort_Nelson
|
|
||||||
(UTC -07) Denver
|
|
||||||
(UTC -07) Boise
|
|
||||||
(UTC -07) Dawson_Creek
|
|
||||||
(UTC -07) Cambridge_Bay
|
|
||||||
(UTC -06) North_Dakota
|
|
||||||
(UTC -06) Knox_IN
|
|
||||||
(UTC -06) Costa_Rica
|
|
||||||
(UTC -06) Menominee
|
|
||||||
(UTC -06) El_Salvador
|
|
||||||
(UTC -06) Regina
|
|
||||||
(UTC -06) Guatemala
|
|
||||||
(UTC -06) Resolute
|
|
||||||
(UTC -06) Monterrey
|
|
||||||
(UTC -06) Chicago
|
|
||||||
(UTC -06) Winnipeg
|
|
||||||
(UTC -06) Indiana
|
|
||||||
(UTC -06) Rankin_Inlet
|
|
||||||
(UTC -06) Merida
|
|
||||||
(UTC -06) Tegucigalpa
|
|
||||||
(UTC -06) Managua
|
|
||||||
(UTC -06) Belize
|
|
||||||
(UTC -06) Rainy_River
|
|
||||||
(UTC -06) Bahia_Banderas
|
|
||||||
(UTC -06) Ojinaga
|
|
||||||
(UTC -06) Chihuahua
|
|
||||||
(UTC -06) Swift_Current
|
|
||||||
(UTC -06) Mexico_City
|
|
||||||
(UTC -06) Matamoros
|
|
||||||
(UTC -05) Jamaica
|
|
||||||
(UTC -05) Montreal
|
|
||||||
(UTC -05) Havana
|
|
||||||
(UTC -05) Grand_Turk
|
|
||||||
(UTC -05) Iqaluit
|
|
||||||
(UTC -05) Louisville
|
|
||||||
(UTC -05) Guayaquil
|
|
||||||
(UTC -05) Lima
|
|
||||||
(UTC -05) Coral_Harbour
|
|
||||||
(UTC -05) Detroit
|
|
||||||
(UTC -05) Port-au-Prince
|
|
||||||
(UTC -05) Fort_Wayne
|
|
||||||
(UTC -05) Eirunepe
|
|
||||||
(UTC -05) Indianapolis
|
|
||||||
(UTC -05) Rio_Branco
|
|
||||||
(UTC -05) Cancun
|
|
||||||
(UTC -05) Nipigon
|
|
||||||
(UTC -05) Toronto
|
|
||||||
(UTC -05) Panama
|
|
||||||
(UTC -05) Indiana
|
|
||||||
(UTC -05) New_York
|
|
||||||
(UTC -05) Kentucky
|
|
||||||
(UTC -05) Pangnirtung
|
|
||||||
(UTC -05) Thunder_Bay
|
|
||||||
(UTC -05) Bogota
|
|
||||||
(UTC -05) Cayman
|
|
||||||
(UTC -05) Atikokan
|
|
||||||
(UTC -05) Porto_Acre
|
|
||||||
(UTC -05) Nassau
|
|
||||||
(UTC -04) Anguilla
|
|
||||||
(UTC -04) Guadeloupe
|
|
||||||
(UTC -04) Puerto_Rico
|
|
||||||
(UTC -04) Porto_Velho
|
|
||||||
(UTC -04) Guyana
|
|
||||||
(UTC -04) Lower_Princes
|
|
||||||
(UTC -04) St_Lucia
|
|
||||||
(UTC -04) Port_of_Spain
|
|
||||||
(UTC -04) Dominica
|
|
||||||
(UTC -04) Manaus
|
|
||||||
(UTC -04) Thule
|
|
||||||
(UTC -04) St_Vincent
|
|
||||||
(UTC -04) St_Barthelemy
|
|
||||||
(UTC -04) Grenada
|
|
||||||
(UTC -04) Marigot
|
|
||||||
(UTC -04) Goose_Bay
|
|
||||||
(UTC -04) Martinique
|
|
||||||
(UTC -04) La_Paz
|
|
||||||
(UTC -04) Cuiaba
|
|
||||||
(UTC -04) Tortola
|
|
||||||
(UTC -04) Virgin
|
|
||||||
(UTC -04) Santo_Domingo
|
|
||||||
(UTC -04) Antigua
|
|
||||||
(UTC -04) Curacao
|
|
||||||
(UTC -04) Barbados
|
|
||||||
(UTC -04) Blanc-Sablon
|
|
||||||
(UTC -04) Aruba
|
|
||||||
(UTC -04) Kralendijk
|
|
||||||
(UTC -04) Montserrat
|
|
||||||
(UTC -04) Campo_Grande
|
|
||||||
(UTC -04) Caracas
|
|
||||||
(UTC -04) St_Thomas
|
|
||||||
(UTC -04) Glace_Bay
|
|
||||||
(UTC -04) St_Kitts
|
|
||||||
(UTC -04) Moncton
|
|
||||||
(UTC -04) Boa_Vista
|
|
||||||
(UTC -04) Halifax
|
|
||||||
(UTC -03) Buenos_Aires
|
|
||||||
(UTC -03) Santarem
|
|
||||||
(UTC -03) Araguaina
|
|
||||||
(UTC -03) Belem
|
|
||||||
(UTC -03) St_Johns
|
|
||||||
(UTC -03) Nuuk
|
|
||||||
(UTC -03) Cordoba
|
|
||||||
(UTC -03) Catamarca
|
|
||||||
(UTC -03) Rosario
|
|
||||||
(UTC -03) Jujuy
|
|
||||||
(UTC -03) Montevideo
|
|
||||||
(UTC -03) Punta_Arenas
|
|
||||||
(UTC -03) Cayenne
|
|
||||||
(UTC -03) Sao_Paulo
|
|
||||||
(UTC -03) Santiago
|
|
||||||
(UTC -03) Paramaribo
|
|
||||||
(UTC -03) Miquelon
|
|
||||||
(UTC -03) Godthab
|
|
||||||
(UTC -03) Maceio
|
|
||||||
(UTC -03) Fortaleza
|
|
||||||
(UTC -03) Argentina
|
|
||||||
(UTC -03) Mendoza
|
|
||||||
(UTC -03) Recife
|
|
||||||
(UTC -03) Bahia
|
|
||||||
(UTC -03) Asuncion
|
|
||||||
(UTC -02) Noronha
|
|
||||||
(UTC -01) Scoresbysund
|
|
||||||
(UTC +00) Danmarkshavn
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
(UTC -03) Rothera
|
|
||||||
(UTC -03) Palmer
|
|
||||||
(UTC +00) Troll
|
|
||||||
(UTC +03) Syowa
|
|
||||||
(UTC +05) Mawson
|
|
||||||
(UTC +06) Vostok
|
|
||||||
(UTC +07) Davis
|
|
||||||
(UTC +10) DumontDUrville
|
|
||||||
(UTC +11) Casey
|
|
||||||
(UTC +11) Macquarie
|
|
||||||
(UTC +13) McMurdo
|
|
||||||
(UTC +13) South_Pole
|
|
||||||
@ -1 +0,0 @@
|
|||||||
(UTC +01) Longyearbyen
|
|
||||||
@ -1,99 +0,0 @@
|
|||||||
(UTC +02) Beirut
|
|
||||||
(UTC +02) Famagusta
|
|
||||||
(UTC +02) Nicosia
|
|
||||||
(UTC +02) Hebron
|
|
||||||
(UTC +02) Tel_Aviv
|
|
||||||
(UTC +02) Jerusalem
|
|
||||||
(UTC +02) Gaza
|
|
||||||
(UTC +03) Amman
|
|
||||||
(UTC +03) Bahrain
|
|
||||||
(UTC +03) Tehran
|
|
||||||
(UTC +03) Baghdad
|
|
||||||
(UTC +03) Istanbul
|
|
||||||
(UTC +03) Kuwait
|
|
||||||
(UTC +03) Riyadh
|
|
||||||
(UTC +03) Qatar
|
|
||||||
(UTC +03) Damascus
|
|
||||||
(UTC +03) Aden
|
|
||||||
(UTC +04) Yerevan
|
|
||||||
(UTC +04) Baku
|
|
||||||
(UTC +04) Dubai
|
|
||||||
(UTC +04) Kabul
|
|
||||||
(UTC +04) Muscat
|
|
||||||
(UTC +04) Tbilisi
|
|
||||||
(UTC +05) Kathmandu
|
|
||||||
(UTC +05) Samarkand
|
|
||||||
(UTC +05) Ashgabat
|
|
||||||
(UTC +05) Karachi
|
|
||||||
(UTC +05) Katmandu
|
|
||||||
(UTC +05) Calcutta
|
|
||||||
(UTC +05) Tashkent
|
|
||||||
(UTC +05) Yekaterinburg
|
|
||||||
(UTC +05) Oral
|
|
||||||
(UTC +05) Dushanbe
|
|
||||||
(UTC +05) Atyrau
|
|
||||||
(UTC +05) Aqtobe
|
|
||||||
(UTC +05) Aqtau
|
|
||||||
(UTC +05) Qyzylorda
|
|
||||||
(UTC +05) Ashkhabad
|
|
||||||
(UTC +05) Colombo
|
|
||||||
(UTC +05) Kolkata
|
|
||||||
(UTC +06) Dhaka
|
|
||||||
(UTC +06) Thimphu
|
|
||||||
(UTC +06) Rangoon
|
|
||||||
(UTC +06) Kashgar
|
|
||||||
(UTC +06) Qostanay
|
|
||||||
(UTC +06) Almaty
|
|
||||||
(UTC +06) Urumqi
|
|
||||||
(UTC +06) Yangon
|
|
||||||
(UTC +06) Dacca
|
|
||||||
(UTC +06) Thimbu
|
|
||||||
(UTC +06) Omsk
|
|
||||||
(UTC +06) Bishkek
|
|
||||||
(UTC +07) Ho_Chi_Minh
|
|
||||||
(UTC +07) Phnom_Penh
|
|
||||||
(UTC +07) Vientiane
|
|
||||||
(UTC +07) Bangkok
|
|
||||||
(UTC +07) Krasnoyarsk
|
|
||||||
(UTC +07) Novokuznetsk
|
|
||||||
(UTC +07) Barnaul
|
|
||||||
(UTC +07) Jakarta
|
|
||||||
(UTC +07) Saigon
|
|
||||||
(UTC +07) Hovd
|
|
||||||
(UTC +07) Novosibirsk
|
|
||||||
(UTC +07) Tomsk
|
|
||||||
(UTC +07) Pontianak
|
|
||||||
(UTC +08) Harbin
|
|
||||||
(UTC +08) Chungking
|
|
||||||
(UTC +08) Ulan_Bator
|
|
||||||
(UTC +08) Brunei
|
|
||||||
(UTC +08) Singapore
|
|
||||||
(UTC +08) Choibalsan
|
|
||||||
(UTC +08) Chongqing
|
|
||||||
(UTC +08) Macau
|
|
||||||
(UTC +08) Ujung_Pandang
|
|
||||||
(UTC +08) Manila
|
|
||||||
(UTC +08) Kuala_Lumpur
|
|
||||||
(UTC +08) Makassar
|
|
||||||
(UTC +08) Kuching
|
|
||||||
(UTC +08) Macao
|
|
||||||
(UTC +08) Shanghai
|
|
||||||
(UTC +08) Taipei
|
|
||||||
(UTC +08) Ulaanbaatar
|
|
||||||
(UTC +08) Irkutsk
|
|
||||||
(UTC +08) Hong_Kong
|
|
||||||
(UTC +09) Khandyga
|
|
||||||
(UTC +09) Seoul
|
|
||||||
(UTC +09) Jayapura
|
|
||||||
(UTC +09) Chita
|
|
||||||
(UTC +09) Pyongyang
|
|
||||||
(UTC +09) Yakutsk
|
|
||||||
(UTC +09) Tokyo
|
|
||||||
(UTC +09) Dili
|
|
||||||
(UTC +10) Vladivostok
|
|
||||||
(UTC +10) Ust-Nera
|
|
||||||
(UTC +11) Srednekolymsk
|
|
||||||
(UTC +11) Sakhalin
|
|
||||||
(UTC +11) Magadan
|
|
||||||
(UTC +12) Anadyr
|
|
||||||
(UTC +12) Kamchatka
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
(UTC -04) Bermuda
|
|
||||||
(UTC -03) Stanley
|
|
||||||
(UTC -02) South_Georgia
|
|
||||||
(UTC -01) Cape_Verde
|
|
||||||
(UTC -01) Azores
|
|
||||||
(UTC +00) Faeroe
|
|
||||||
(UTC +00) Faroe
|
|
||||||
(UTC +00) St_Helena
|
|
||||||
(UTC +00) Reykjavik
|
|
||||||
(UTC +00) Canary
|
|
||||||
(UTC +00) Madeira
|
|
||||||
(UTC +01) Jan_Mayen
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
(UTC +08) Perth
|
|
||||||
(UTC +08) Eucla
|
|
||||||
(UTC +08) West
|
|
||||||
(UTC +09) Darwin
|
|
||||||
(UTC +09) North
|
|
||||||
(UTC +10) Yancowinna
|
|
||||||
(UTC +10) South
|
|
||||||
(UTC +10) Lindeman
|
|
||||||
(UTC +10) Broken_Hill
|
|
||||||
(UTC +10) Adelaide
|
|
||||||
(UTC +10) Queensland
|
|
||||||
(UTC +10) Brisbane
|
|
||||||
(UTC +11) Victoria
|
|
||||||
(UTC +11) Hobart
|
|
||||||
(UTC +11) ACT
|
|
||||||
(UTC +11) Tasmania
|
|
||||||
(UTC +11) LHI
|
|
||||||
(UTC +11) Currie
|
|
||||||
(UTC +11) Canberra
|
|
||||||
(UTC +11) Sydney
|
|
||||||
(UTC +11) Melbourne
|
|
||||||
(UTC +11) Lord_Howe
|
|
||||||
(UTC +11) NSW
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
(UTC -05) Acre
|
|
||||||
(UTC -04) West
|
|
||||||
(UTC -03) East
|
|
||||||
(UTC -02) DeNoronha
|
|
||||||
@ -1,64 +0,0 @@
|
|||||||
(UTC +00) Jersey
|
|
||||||
(UTC +00) Dublin
|
|
||||||
(UTC +00) Belfast
|
|
||||||
(UTC +00) Guernsey
|
|
||||||
(UTC +00) London
|
|
||||||
(UTC +00) Lisbon
|
|
||||||
(UTC +00) Isle_of_Man
|
|
||||||
(UTC +01) Ljubljana
|
|
||||||
(UTC +01) Stockholm
|
|
||||||
(UTC +01) Skopje
|
|
||||||
(UTC +01) Oslo
|
|
||||||
(UTC +01) Sarajevo
|
|
||||||
(UTC +01) Tirane
|
|
||||||
(UTC +01) Zagreb
|
|
||||||
(UTC +01) Vienna
|
|
||||||
(UTC +01) Andorra
|
|
||||||
(UTC +01) Madrid
|
|
||||||
(UTC +01) Podgorica
|
|
||||||
(UTC +01) Copenhagen
|
|
||||||
(UTC +01) Monaco
|
|
||||||
(UTC +01) Belgrade
|
|
||||||
(UTC +01) Budapest
|
|
||||||
(UTC +01) Brussels
|
|
||||||
(UTC +01) Amsterdam
|
|
||||||
(UTC +01) Berlin
|
|
||||||
(UTC +01) Zurich
|
|
||||||
(UTC +01) Bratislava
|
|
||||||
(UTC +01) Prague
|
|
||||||
(UTC +01) Malta
|
|
||||||
(UTC +01) Rome
|
|
||||||
(UTC +01) Luxembourg
|
|
||||||
(UTC +01) Vaduz
|
|
||||||
(UTC +01) Paris
|
|
||||||
(UTC +01) Warsaw
|
|
||||||
(UTC +01) Vatican
|
|
||||||
(UTC +01) Busingen
|
|
||||||
(UTC +01) Gibraltar
|
|
||||||
(UTC +01) San_Marino
|
|
||||||
(UTC +02) Sofia
|
|
||||||
(UTC +02) Vilnius
|
|
||||||
(UTC +02) Helsinki
|
|
||||||
(UTC +02) Mariehamn
|
|
||||||
(UTC +02) Riga
|
|
||||||
(UTC +02) Bucharest
|
|
||||||
(UTC +02) Kyiv
|
|
||||||
(UTC +02) Kiev
|
|
||||||
(UTC +02) Athens
|
|
||||||
(UTC +02) Zaporozhye
|
|
||||||
(UTC +02) Tallinn
|
|
||||||
(UTC +02) Kaliningrad
|
|
||||||
(UTC +02) Uzhgorod
|
|
||||||
(UTC +02) Chisinau
|
|
||||||
(UTC +02) Nicosia
|
|
||||||
(UTC +02) Tiraspol
|
|
||||||
(UTC +03) Simferopol
|
|
||||||
(UTC +03) Istanbul
|
|
||||||
(UTC +03) Moscow
|
|
||||||
(UTC +03) Kirov
|
|
||||||
(UTC +03) Minsk
|
|
||||||
(UTC +03) Volgograd
|
|
||||||
(UTC +04) Ulyanovsk
|
|
||||||
(UTC +04) Samara
|
|
||||||
(UTC +04) Astrakhan
|
|
||||||
(UTC +04) Saratov
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
(UTC +03) Comoro
|
|
||||||
(UTC +03) Antananarivo
|
|
||||||
(UTC +03) Mayotte
|
|
||||||
(UTC +04) Mauritius
|
|
||||||
(UTC +04) Reunion
|
|
||||||
(UTC +04) Mahe
|
|
||||||
(UTC +05) Maldives
|
|
||||||
(UTC +05) Kerguelen
|
|
||||||
(UTC +06) Chagos
|
|
||||||
(UTC +06) Cocos
|
|
||||||
(UTC +07) Christmas
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
(UTC -08) BajaNorte
|
|
||||||
(UTC -07) BajaSur
|
|
||||||
(UTC -06) General
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
(UTC -11) Samoa
|
|
||||||
(UTC -10) Aleutian
|
|
||||||
(UTC -10) Hawaii
|
|
||||||
(UTC -09) Alaska
|
|
||||||
(UTC -08) Pacific
|
|
||||||
(UTC -07) Mountain
|
|
||||||
(UTC -07) Arizona
|
|
||||||
(UTC -06) Indiana-Starke
|
|
||||||
(UTC -06) Central
|
|
||||||
(UTC -05) East-Indiana
|
|
||||||
(UTC -05) Michigan
|
|
||||||
(UTC -05) Eastern
|
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
#include <gtkmm/window.h>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <memory>
|
||||||
|
#include <gtkmm.h>
|
||||||
|
#include <ostream>
|
||||||
|
#include <string>
|
||||||
|
#include <ctime>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <fstream>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <glibmm/i18n.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <gtkmm/plug.h>
|
||||||
|
#include <gtkmm/stock.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include "ubl-settings-datetime.h"
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
string str_argv="";
|
||||||
|
string str_cmd_argv = "";
|
||||||
|
for (int i=1; i<argc; i++){
|
||||||
|
str_cmd_argv+= to_string(*argv[i]) + " ";
|
||||||
|
}
|
||||||
|
if (geteuid()!=0){
|
||||||
|
string cmd = "pkexec " + app_name + " " + str_cmd_argv ;
|
||||||
|
system(cmd.c_str());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
bindtextdomain("ubl-settings-datetime", "/usr/share/locale/");
|
||||||
|
bind_textdomain_codeset("ubl-settings-datetime", "UTF-8");
|
||||||
|
textdomain("ubl-settings-datetime");
|
||||||
|
if (argc>1){
|
||||||
|
str_argv = argv[1];
|
||||||
|
}
|
||||||
|
if ((str_argv.find("--lock")!=std::string::npos || argc==1)){
|
||||||
|
int len_argv = 1;
|
||||||
|
auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug");
|
||||||
|
auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade");
|
||||||
|
builder->set_translation_domain(app_name);
|
||||||
|
for (int i=0; i<argc; i++){
|
||||||
|
str_argv = argv[i];
|
||||||
|
if (str_argv=="--help"){
|
||||||
|
help();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else if (str_argv=="--lock-datetime"){
|
||||||
|
flag_datetime=true;
|
||||||
|
}
|
||||||
|
else if (str_argv=="--lock-timezone"){
|
||||||
|
flag_timezone=true;
|
||||||
|
}
|
||||||
|
else if (str_argv=="--lock-ntp"){
|
||||||
|
flag_ntp=true;
|
||||||
|
}
|
||||||
|
else if (str_argv=="--lock-update"){
|
||||||
|
flag_update=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
MainWindow* wnd = nullptr;
|
||||||
|
builder->get_widget_derived("window", wnd);
|
||||||
|
auto r = app->run(*wnd);
|
||||||
|
delete wnd;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
|
||||||
|
auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade");
|
||||||
|
builder->set_translation_domain(app_name);
|
||||||
|
Glib::init();
|
||||||
|
Glib::OptionContext context;
|
||||||
|
CmdArgParser parser{
|
||||||
|
"Socket ID",
|
||||||
|
"Command line argument for socket ID communication.",
|
||||||
|
"No help available, sorry"
|
||||||
|
};
|
||||||
|
context.set_main_group(parser);
|
||||||
|
context.parse(argc, argv);
|
||||||
|
::Window socketID = parser.GetSocketID();
|
||||||
|
SettingsPlug plug{socketID, builder};
|
||||||
|
plug.show();
|
||||||
|
app->run(plug);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,677 @@
|
|||||||
|
#include <gtkmm/window.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iostream>
|
||||||
|
#include <memory>
|
||||||
|
#include <gtkmm.h>
|
||||||
|
#include <ostream>
|
||||||
|
#include <string>
|
||||||
|
#include <ctime>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <fstream>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <glibmm/i18n.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <gtkmm/plug.h>
|
||||||
|
#include <gtkmm/stock.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
|
#include <vector>
|
||||||
|
#include "ubl-settings-datetime.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
string path_app= "/usr/bin/";
|
||||||
|
string path_glade= "/usr/share/ubl-settings-datetime/ui/";
|
||||||
|
string app_name = "ubl-settings-datetime";
|
||||||
|
string path_locale = "/usr/share/locale/";
|
||||||
|
string path_css = "/usr/share/ubl-settings-datetime/css/style.css";
|
||||||
|
bool flag_datetime = false;
|
||||||
|
bool flag_timezone = false;
|
||||||
|
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::OptionEntry socketIDArg;
|
||||||
|
socketIDArg.set_long_name("socket-id");
|
||||||
|
socketIDArg.set_short_name('s');
|
||||||
|
socketIDArg.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
|
||||||
|
socketIDArg.set_description("Settings manager socket");
|
||||||
|
add_entry(socketIDArg, m_socketID);
|
||||||
|
}
|
||||||
|
|
||||||
|
::Window CmdArgParser::GetSocketID() const {
|
||||||
|
return m_socketID;
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindow::MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder)
|
||||||
|
: Gtk::ApplicationWindow(obj)
|
||||||
|
, builder{builder} {
|
||||||
|
this->settings();
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) {
|
||||||
|
this->builder = builder;
|
||||||
|
this->settings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::settings(){
|
||||||
|
year=0, month=0, day=0;
|
||||||
|
this->get_builder();
|
||||||
|
this->lacalization();
|
||||||
|
_numTimeHrs->set_range(0,23);
|
||||||
|
_numTimeMin->set_range(0,59);
|
||||||
|
_numTimeHrs->set_increments(1.0,1.0);
|
||||||
|
_numTimeMin->set_increments(1.0,1.0);
|
||||||
|
this->get_config();
|
||||||
|
this->flag_block_gui();
|
||||||
|
this->event();
|
||||||
|
this->parse_text_date();
|
||||||
|
}
|
||||||
|
void MainWindow::lacalization(){
|
||||||
|
|
||||||
|
_txtDate->set_tooltip_text(gettext("Date of\nFormat: DD.MM.YYYY"));
|
||||||
|
_lblSynchronizebChkGLob->set_text(gettext("Synchronize via NTP"));
|
||||||
|
_cbDhcp->append(gettext("DHCP"));
|
||||||
|
_cbDhcp->append(gettext("Manually"));
|
||||||
|
_lblDateTimeSetting->set_text(gettext("Local Configuration"));
|
||||||
|
_lblHead->set_text(gettext("Settings the date and time"));
|
||||||
|
_lblTime->set_text(gettext("Time"));
|
||||||
|
_lblData->set_text(gettext("Date"));
|
||||||
|
_lblTimeZone->set_text(gettext("Time zone"));
|
||||||
|
_lblReg->set_text(gettext("Region"));
|
||||||
|
_lblZone->set_text(gettext("Zone"));
|
||||||
|
_lblRegGlob->set_text(gettext("Region"));
|
||||||
|
_lblZone1Glob->set_text(gettext("Zone"));
|
||||||
|
_lblTimeZoneGlob->set_text(gettext("Time zone"));
|
||||||
|
_lblSynchronizeBtn->set_text(gettext("Apply local date and time settings"));
|
||||||
|
_lblDateTimeSettingGlob->set_text(gettext("Global customization"));
|
||||||
|
this->set_title(gettext("ubl-settings-datetime"));
|
||||||
|
_mess_dchp->set_title(gettext("Warning!"));
|
||||||
|
_lblTimeBios->set_text(gettext("Synchronize hardware time"));
|
||||||
|
_lblSynchronizebChk->set_text(gettext("Synchronize via NTP"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::flag_block_gui(){
|
||||||
|
if (flag_datetime==true){
|
||||||
|
//_numTimeHrs->set_sensitive(false);
|
||||||
|
//_numTimeMin->set_sensitive(false);
|
||||||
|
//_txtDate->set_sensitive(false);
|
||||||
|
_btnUpdateDateTime->set_sensitive(false);
|
||||||
|
}
|
||||||
|
if (flag_timezone==true){
|
||||||
|
_cbRegion->set_sensitive(false);
|
||||||
|
_cbZone->set_sensitive(false);
|
||||||
|
_cbRegionGlob->set_sensitive(false);
|
||||||
|
_cbZoneGlob->set_sensitive(false);
|
||||||
|
//_btnChooseDate->set_sensitive(false);
|
||||||
|
_cbDhcp->set_sensitive(false);
|
||||||
|
}
|
||||||
|
if (flag_ntp==true){
|
||||||
|
_cbxSynchronizeNtpGlob->set_sensitive(false);
|
||||||
|
_cbDhcp->set_sensitive(false);
|
||||||
|
_txtNtpServer->set_sensitive(false);
|
||||||
|
_cbxSynchronizeNtp->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);
|
||||||
|
_lblZone1Glob->set_sensitive(false);
|
||||||
|
_cbZoneGlob->set_sensitive(false);
|
||||||
|
_txtNtpServer->set_sensitive(false);
|
||||||
|
_cbDhcp->set_sensitive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::add_CSS(){
|
||||||
|
Glib::RefPtr<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
|
||||||
|
cssProvider->load_from_path(path_css);
|
||||||
|
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
|
||||||
|
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();//get default screen
|
||||||
|
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();
|
||||||
|
context->add_class("cssboxColor1");
|
||||||
|
context_lbl_head->add_class("textHead");
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::get_builder(){
|
||||||
|
builder->get_widget("boxColor", _boxColor);
|
||||||
|
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);
|
||||||
|
builder->get_widget("cbDhcp", _cbDhcp);
|
||||||
|
builder->get_widget("txtDate", _txtDate);
|
||||||
|
builder->get_widget("cbRegion", _cbRegion);
|
||||||
|
builder->get_widget("cbRegionGlob", _cbRegionGlob);
|
||||||
|
builder->get_widget("cbZone", _cbZone);
|
||||||
|
builder->get_widget("cbZoneGlob", _cbZoneGlob);
|
||||||
|
builder->get_widget("txtNtpServer", _txtNtpServer);
|
||||||
|
builder->get_widget("cldrDate", _cldrDate);
|
||||||
|
builder->get_widget("mess_dchp", _mess_dchp);
|
||||||
|
builder->get_widget("lblMessage", _lblMessage);
|
||||||
|
builder->get_widget("lblDateTimeSetting",_lblDateTimeSetting);
|
||||||
|
builder->get_widget("lblHead",_lblHead);
|
||||||
|
builder->get_widget("lblTime",_lblTime);
|
||||||
|
builder->get_widget("lblData",_lblData);
|
||||||
|
builder->get_widget("lblTimeZone",_lblTimeZone);
|
||||||
|
builder->get_widget("lblReg",_lblReg);
|
||||||
|
builder->get_widget("lblZone",_lblZone);
|
||||||
|
builder->get_widget("lblRegGlob",_lblRegGlob);
|
||||||
|
builder->get_widget("lblZone1Glob",_lblZone1Glob);
|
||||||
|
builder->get_widget("lblTimeZoneGlob",_lblTimeZoneGlob);
|
||||||
|
builder->get_widget("lblSynchronizebChk",_lblSynchronizebChk);
|
||||||
|
builder->get_widget("lblSynchronizebChkGLob",_lblSynchronizebChkGLob);
|
||||||
|
builder->get_widget("lblSynchronizeBtn",_lblSynchronizeBtn);
|
||||||
|
builder->get_widget("lblDateTimeSettingGlob",_lblDateTimeSettingGlob);
|
||||||
|
builder->get_widget("lblTimeBios",_lblTimeBios);
|
||||||
|
builder->get_widget("btnHardwareTime",_btnHardwareTime);
|
||||||
|
builder->get_widget("cbxSynchronizeNtp",_cbxSynchronizeNtp);
|
||||||
|
|
||||||
|
this->add_CSS();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::event(){
|
||||||
|
_cbxSynchronizeNtp->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));
|
||||||
|
//_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::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));
|
||||||
|
_cbRegionGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::append_zone_glob));
|
||||||
|
_cbZone->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone));
|
||||||
|
_cbZoneGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone_glob));
|
||||||
|
_txtNtpServer->signal_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_ntp));
|
||||||
|
_cldrDate->signal_day_selected_double_click().connect(sigc::mem_fun(*this, &MainWindow::get_calendar));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::set_ntp_toggle(){
|
||||||
|
bool flag = _cbxSynchronizeNtp->get_active();
|
||||||
|
if (flag_ntp==true){
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_numTimeHrs->set_sensitive(!flag);
|
||||||
|
_numTimeMin->set_sensitive(!flag);
|
||||||
|
_btnChooseDate->set_sensitive(!flag);
|
||||||
|
_txtDate->set_sensitive(!flag);
|
||||||
|
_lblTimeBios->set_sensitive(!flag);
|
||||||
|
}
|
||||||
|
string cmd = "";
|
||||||
|
if (flag==false){
|
||||||
|
cmd="systemctl --now disable systemd-timesyncd.service ntpd.service";
|
||||||
|
system(cmd.c_str());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cmd = "systemctl --now enable systemd-timesyncd.service";
|
||||||
|
system(cmd.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::hardware_clock(){
|
||||||
|
string cmd = "hwclock --systohc";
|
||||||
|
system(cmd.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::gui_mess_close(){
|
||||||
|
_mess_dchp->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MainWindow::focus_ntp(GdkEventFocus* event){
|
||||||
|
if (event!=NULL){}
|
||||||
|
if (_txtNtpServer->get_text()=="" || _txtNtpServer->get_text()==" "){
|
||||||
|
_lblMessage->set_text(gettext("Enter DHCP !"));
|
||||||
|
_mess_dchp->show();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
string cmd = "";
|
||||||
|
cmd = "/usr/bin/ubconfig set network NTPSERVERS=" + _txtNtpServer->get_text();
|
||||||
|
this->call(cmd.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::event_entry_cbDhcp(){
|
||||||
|
Glib::ustring str_dhcp = _cbDhcp->get_active_text();
|
||||||
|
if (str_dhcp.length()!=0){
|
||||||
|
if (str_dhcp=="DHCP"){
|
||||||
|
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
|
||||||
|
system(cmd.c_str());
|
||||||
|
_txtNtpServer->set_sensitive(false);
|
||||||
|
_cbDhcp->set_active(0);
|
||||||
|
_txtNtpServer->set_text("");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
string str_dhcp = this->call("/usr/bin/ubconfig get network NTPSERVERS");
|
||||||
|
if ((str_dhcp!="") && (str_dhcp!="(null)") ){
|
||||||
|
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"){
|
||||||
|
_txtNtpServer->set_text(str_dhcp);
|
||||||
|
}
|
||||||
|
_txtNtpServer->set_sensitive(true);
|
||||||
|
_cbDhcp->set_active(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
|
||||||
|
system(cmd.c_str());
|
||||||
|
_cbDhcp->set_active(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::get_calendar(){
|
||||||
|
string str_month = "";
|
||||||
|
string str_day = "";
|
||||||
|
_cldrDate->get_date(year, month, day);
|
||||||
|
if (month <10){
|
||||||
|
str_month = "0"+to_string(month+1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_month = to_string(month+1);
|
||||||
|
}
|
||||||
|
if (day <10){
|
||||||
|
str_day = "0"+to_string(day);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_day = to_string(day);
|
||||||
|
}
|
||||||
|
string date = str_day + '.' + str_month + '.' + to_string(year);
|
||||||
|
_txtDate->set_text(date);
|
||||||
|
_popCalendar->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::calendar_show(){
|
||||||
|
if (year==0){
|
||||||
|
time_t now = time(0);
|
||||||
|
tm *ltm = localtime(&now);
|
||||||
|
unsigned int y=1900+ ltm->tm_year;
|
||||||
|
unsigned int m=ltm->tm_mon;
|
||||||
|
unsigned int d=ltm->tm_mday;
|
||||||
|
_cldrDate->select_month(m,y);
|
||||||
|
_cldrDate->select_day(d);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
_cldrDate->select_month(month,year);
|
||||||
|
_cldrDate->select_day(day);
|
||||||
|
|
||||||
|
}
|
||||||
|
_popCalendar->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);
|
||||||
|
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(0);
|
||||||
|
_txtNtpServer->set_sensitive(false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if (str_dhcp==""){
|
||||||
|
_lblMessage->set_text(gettext("Enter DHCP !"));
|
||||||
|
_mess_dchp->show();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
_cbDhcp->set_active(1);
|
||||||
|
_txtNtpServer->set_text(str_dhcp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this->set_ntp_toggle_glob();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
_cbxSynchronizeNtpGlob->set_active(0);
|
||||||
|
_cbDhcp->set_sensitive(0);
|
||||||
|
_txtNtpServer->set_sensitive(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::get_config(){
|
||||||
|
this->read_file();
|
||||||
|
this->update_hour_minute();
|
||||||
|
this->update_calendar();
|
||||||
|
this->enry_dhcp_mess();
|
||||||
|
string str_ntp = this->call("systemctl status ntpd.service systemd-timesyncd.service | grep \"Active: active\"");
|
||||||
|
if (str_ntp.length()<50) {
|
||||||
|
_cbxSynchronizeNtp->set_active(false);
|
||||||
|
_numTimeHrs->set_sensitive(true);
|
||||||
|
_numTimeMin->set_sensitive(true);
|
||||||
|
_btnChooseDate->set_sensitive(true);
|
||||||
|
_txtDate->set_sensitive(true);
|
||||||
|
_lblTimeBios->set_sensitive(true);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
_cbxSynchronizeNtp->set_active(true);
|
||||||
|
_numTimeHrs->set_sensitive(false);
|
||||||
|
_numTimeMin->set_sensitive(false);
|
||||||
|
_btnChooseDate->set_sensitive(false);
|
||||||
|
_txtDate->set_sensitive(false);
|
||||||
|
_lblTimeBios->set_sensitive(false);
|
||||||
|
}
|
||||||
|
string read_reg_zon_cfg = this->call("/usr/bin/ubconfig get clock ZONE");
|
||||||
|
if ((read_reg_zon_cfg != "") && (read_reg_zon_cfg !="(null)")){
|
||||||
|
read_reg_zon_cfg = read_reg_zon_cfg.substr(read_reg_zon_cfg.find("=")+1,read_reg_zon_cfg.length());
|
||||||
|
read_reg_zon_cfg = read_reg_zon_cfg.substr(0,read_reg_zon_cfg.find("\n"));
|
||||||
|
string str_filling_reg = read_reg_zon_cfg.substr(0,read_reg_zon_cfg.find("/"));
|
||||||
|
string str_filling_zon = read_reg_zon_cfg.substr(read_reg_zon_cfg.find("/")+1,read_reg_zon_cfg.length());
|
||||||
|
str_filling_zon = str_filling_zon.substr(0,str_filling_zon.find("\n"));
|
||||||
|
string str_zone_check = "";
|
||||||
|
this->append_region_zone(str_filling_reg,str_filling_zon);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this->append_region_zone("Asia","Omsk");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::enter_zone(){
|
||||||
|
Glib::ustring zone_text = _cbZone->get_active_text();
|
||||||
|
Glib::ustring reg_text = _cbRegion->get_active_text();
|
||||||
|
if(!(zone_text.empty()) && !(reg_text.empty())){
|
||||||
|
str_zone=zone_text.substr(zone_text.find(") ")+2,zone_text.length());
|
||||||
|
str_region=reg_text;
|
||||||
|
string cmd = "rm -f /etc/localtime";
|
||||||
|
system(cmd.c_str());
|
||||||
|
string cmd1 = "ln -s /usr/share/zoneinfo/" + str_region + "/" + str_zone+" /etc/localtime";
|
||||||
|
system(cmd1.c_str());
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_zone="";
|
||||||
|
str_region="";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::parse_text_date(){
|
||||||
|
string data = _txtDate->get_text();
|
||||||
|
if (data.length()==10){
|
||||||
|
string day = data.substr(0,2);
|
||||||
|
string month1 = data.substr(3,2);
|
||||||
|
string year = data.substr(6,data.length());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::enter_zone_glob(){
|
||||||
|
Glib::ustring zone_text = _cbZoneGlob->get_active_text();
|
||||||
|
Glib::ustring reg_text = _cbRegionGlob->get_active_text();
|
||||||
|
if(!(zone_text.empty()) && !(reg_text.empty())){
|
||||||
|
str_zoneGlob = zone_text.substr(zone_text.find(") ")+2,zone_text.length());
|
||||||
|
str_region_glob = reg_text;
|
||||||
|
string cmd = "/usr/bin/ubconfig set clock ZONE=" +str_region_glob +"/" + str_zoneGlob;
|
||||||
|
system(cmd.c_str());
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_zoneGlob="";
|
||||||
|
str_region_glob="";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::set_ntp_toggle_glob(){
|
||||||
|
bool flag = _cbxSynchronizeNtp->get_active();
|
||||||
|
if (flag==true){
|
||||||
|
system("/usr/bin/ubconfig remove network NTPSERVERS")
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::append_region_zone(string region, string zone){
|
||||||
|
int index = 0;
|
||||||
|
for ( const auto &text : time_reg_map ) {
|
||||||
|
_cbRegion->append(text.first);
|
||||||
|
_cbRegionGlob->append(text.first);
|
||||||
|
if (text.first == region){
|
||||||
|
_cbRegionGlob->set_active(index);
|
||||||
|
_cbRegion->set_active(index);
|
||||||
|
}
|
||||||
|
index+=1;
|
||||||
|
}
|
||||||
|
index = 0;
|
||||||
|
string cheek_zone = "";
|
||||||
|
for (const auto &_str_zone : time_reg_map.at(region)){
|
||||||
|
_cbZone->append(_str_zone);
|
||||||
|
_cbZoneGlob->append(_str_zone);
|
||||||
|
if (_str_zone!=""){
|
||||||
|
cheek_zone = _str_zone.substr(_str_zone.find(") ")+2,_str_zone.length());
|
||||||
|
if (cheek_zone == zone){
|
||||||
|
_cbZone->set_active(index);
|
||||||
|
_cbZoneGlob->set_active(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
index+=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
string MainWindow::call(string cmd){
|
||||||
|
FILE *fp;
|
||||||
|
int status;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
fp = popen(cmd.c_str(), "r");
|
||||||
|
if (fp == NULL){
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
while (fgets(path, PATH_MAX, fp) != NULL){
|
||||||
|
printf("%s", path);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
status = pclose(fp);
|
||||||
|
if (status == -1) {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::append_zone(){
|
||||||
|
Glib::ustring text = _cbRegion->get_active_text();
|
||||||
|
_cbZone->remove_all();
|
||||||
|
if(!(text.empty())){
|
||||||
|
str_region = text;
|
||||||
|
for (const auto &_str_zone : time_reg_map.at(str_region)){
|
||||||
|
_cbZone->append(_str_zone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::append_zone_glob(){
|
||||||
|
Glib::ustring text = _cbRegionGlob->get_active_text();
|
||||||
|
_cbZoneGlob->remove_all();
|
||||||
|
if(!(text.empty())){
|
||||||
|
str_region_glob = text;
|
||||||
|
for (const auto &_str_zone : time_reg_map.at(str_region_glob)){
|
||||||
|
_cbZoneGlob->append(_str_zone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::update_time_date(){
|
||||||
|
//this->enter_zone();
|
||||||
|
bool flag = _cbxSynchronizeNtpGlob->get_active();
|
||||||
|
string cmd = "";
|
||||||
|
if ((year!=0) && (month !=0) && (day !=0)){
|
||||||
|
string str_month = "";
|
||||||
|
string str_day = "";
|
||||||
|
month+=2;
|
||||||
|
if (month <10){
|
||||||
|
str_month = "0"+to_string(month);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_month = to_string(month);
|
||||||
|
}
|
||||||
|
if (day <10){
|
||||||
|
str_day = "0"+to_string(day);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_day = to_string(day);
|
||||||
|
}
|
||||||
|
string str_data = "";
|
||||||
|
str_data = str_day+"." + str_month+"." + to_string(year);
|
||||||
|
string str_data_entry = _txtDate->get_text();
|
||||||
|
if (str_data==str_data_entry){
|
||||||
|
cmd = "date +%Y%m%d -s \"" + to_string(year)+
|
||||||
|
str_month+str_day+"\"";
|
||||||
|
system(cmd.c_str());
|
||||||
|
|
||||||
|
_txtDate->set_text(str_data);
|
||||||
|
year=0;
|
||||||
|
month=0;
|
||||||
|
day=0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this->post_entry_data();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this->post_entry_data();
|
||||||
|
}
|
||||||
|
if (flag==false){
|
||||||
|
hour = _numTimeHrs->get_value_as_int();
|
||||||
|
minute = _numTimeMin->get_value_as_int();
|
||||||
|
time_t now = time(0);
|
||||||
|
tm *ltm = localtime(&now);
|
||||||
|
cmd = "date +%T -s \""+
|
||||||
|
to_string(hour) + ":" + to_string(minute)
|
||||||
|
+ ":" + to_string(ltm->tm_sec) +"\"";
|
||||||
|
system(cmd.c_str());
|
||||||
|
}
|
||||||
|
cmd = "hwclock --systohc";
|
||||||
|
system(cmd.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::post_entry_data(){
|
||||||
|
string cmd = "";
|
||||||
|
string data = _txtDate->get_text();
|
||||||
|
if (data.length()==10){
|
||||||
|
string str_day = data.substr(0,2);
|
||||||
|
string str_month = data.substr(3,2);
|
||||||
|
string str_year = data.substr(6,data.length());
|
||||||
|
cmd = "date +%Y%m%d -s \"" + str_year+
|
||||||
|
str_month+str_day+"\"";
|
||||||
|
string str_error_clock = this->call(cmd);
|
||||||
|
size_t index = str_error_clock.find("date: ");
|
||||||
|
if (index==std::string::npos){
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
_lblMessage->set_text(gettext("Incorrect date format"));
|
||||||
|
_mess_dchp->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::update_hour_minute(){
|
||||||
|
time_t now = time(0);
|
||||||
|
tm *ltm = localtime(&now);
|
||||||
|
_numTimeHrs->set_value(ltm->tm_hour);
|
||||||
|
_numTimeMin->set_value(ltm->tm_min);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::update_calendar(){
|
||||||
|
time_t now = time(0);
|
||||||
|
tm *ltm = localtime(&now);
|
||||||
|
int year1 = 1900 + (int)ltm->tm_year;
|
||||||
|
string str_month = "";
|
||||||
|
string str_day = "";
|
||||||
|
unsigned int month, day;
|
||||||
|
month=ltm->tm_mon+1;
|
||||||
|
day=ltm->tm_mday;
|
||||||
|
if (month <=10){
|
||||||
|
str_month = "0"+to_string(month);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_month = to_string(month);
|
||||||
|
}
|
||||||
|
if (day <10){
|
||||||
|
str_day = "0"+to_string(day);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str_day = to_string(day);
|
||||||
|
}
|
||||||
|
string date = str_day + '.' + str_month + '.' + to_string(year1);
|
||||||
|
_txtDate->set_text(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::read_file(){
|
||||||
|
std::string line;
|
||||||
|
namespace fs = std::filesystem;
|
||||||
|
for (const auto & entry : fs::directory_iterator("/usr/share/zoneinfo/")){
|
||||||
|
std::ifstream in(entry.path()); // окрываем файл для чтения
|
||||||
|
if (in.is_open()){
|
||||||
|
string key_reg = entry.path().filename().string();
|
||||||
|
string path_dir = "/usr/share/zoneinfo/"+key_reg;
|
||||||
|
if (fs::is_directory(path_dir)){
|
||||||
|
if (key_reg!="Pacific"){
|
||||||
|
if (key_reg!="posix"){
|
||||||
|
if (key_reg!="Etc"){
|
||||||
|
if (key_reg!="right"){
|
||||||
|
vector<string> zone;
|
||||||
|
zone.push_back("");
|
||||||
|
for (const auto & entry_zone : fs::directory_iterator(path_dir)){
|
||||||
|
std::ifstream in1(entry_zone.path()); // окрываем файл для чтения
|
||||||
|
if (in1.is_open()){
|
||||||
|
string key_zone = entry_zone.path().filename().string();
|
||||||
|
if (key_zone.length()!=0 || key_zone!=" "){
|
||||||
|
zone.push_back(string(gettext(key_zone.c_str())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
in1.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
key_reg = string(gettext(key_reg.c_str()));
|
||||||
|
time_reg_map.insert({key_reg, zone});
|
||||||
|
}}}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<std::string> MainWindow::split(const std::string &s, char delim){
|
||||||
|
std::stringstream ss(s);
|
||||||
|
std::string item;
|
||||||
|
std::vector<std::string> elems;
|
||||||
|
while (std::getline(ss, item, delim)) {
|
||||||
|
elems.push_back(item);
|
||||||
|
}
|
||||||
|
return elems;
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder)
|
||||||
|
: Gtk::Plug{p_socketID}
|
||||||
|
{
|
||||||
|
builder->get_widget("plugBox", plugBox);
|
||||||
|
plugBox->get_parent()->remove(*plugBox);
|
||||||
|
add(*plugBox);
|
||||||
|
show_all_children();
|
||||||
|
}
|
||||||
|
|
||||||
|
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");
|
||||||
|
cout << "Параметры командной строки --lock-datetime\n --lock-timezone\n --lock-ntp\n --lock-update\n" << endl;
|
||||||
|
}
|
||||||
@ -1,684 +0,0 @@
|
|||||||
#include <gtkmm/window.h>
|
|
||||||
#include <cstddef>
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <iostream>
|
|
||||||
#include <memory>
|
|
||||||
#include <gtkmm.h>
|
|
||||||
#include <ostream>
|
|
||||||
#include <string>
|
|
||||||
#include <ctime>
|
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
|
||||||
#include <fstream>
|
|
||||||
#include <filesystem>
|
|
||||||
#include <libintl.h>
|
|
||||||
#include <locale.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <gtkmm/plug.h>
|
|
||||||
#include <gtkmm/stock.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
string path_app= "/usr/bin/";
|
|
||||||
string path_glade= "/usr/share/ubl-settings-datetime/ui/";
|
|
||||||
string app_name = "ubl-settings-datetime";
|
|
||||||
bool flag_datetime = false;
|
|
||||||
bool flag_timezone = false;
|
|
||||||
bool flag_ntp = false;
|
|
||||||
bool flag_update = false;
|
|
||||||
|
|
||||||
|
|
||||||
class CmdArgParser : public Glib::OptionGroup
|
|
||||||
{
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help)
|
|
||||||
: Glib::OptionGroup{p_name, p_description, p_help}
|
|
||||||
{
|
|
||||||
// Define the 'socket ID' argument options:
|
|
||||||
Glib::OptionEntry socketIDArg;
|
|
||||||
socketIDArg.set_long_name("socket-id");
|
|
||||||
socketIDArg.set_short_name('s');
|
|
||||||
socketIDArg.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
|
|
||||||
socketIDArg.set_description("Settings manager socket");
|
|
||||||
|
|
||||||
// Register it in the parser. It value will be recorded in m_socketID for later usage.
|
|
||||||
add_entry(socketIDArg, m_socketID);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Override this to handle errors. I skipped it for simplicity.
|
|
||||||
// void on_error(Glib::OptionContext& context, const Glib::Error& error) override;
|
|
||||||
|
|
||||||
::Window GetSocketID() const
|
|
||||||
{
|
|
||||||
return m_socketID;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
int m_socketID = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class MainWindow : public Gtk::ApplicationWindow {
|
|
||||||
public:
|
|
||||||
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder)
|
|
||||||
: Gtk::ApplicationWindow(obj)
|
|
||||||
, builder{builder}
|
|
||||||
{
|
|
||||||
this->settings();
|
|
||||||
|
|
||||||
}
|
|
||||||
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) {
|
|
||||||
this->builder = builder;
|
|
||||||
this->settings();
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~MainWindow() = default;
|
|
||||||
|
|
||||||
void settings(){
|
|
||||||
this->get_builder();
|
|
||||||
_numTimeHrs->set_range(0,23);
|
|
||||||
_numTimeMin->set_range(0,59);
|
|
||||||
_numTimeHrs->set_increments(1.0,1.0);
|
|
||||||
_numTimeMin->set_increments(1.0,1.0);
|
|
||||||
_txtDate->set_sensitive(false);
|
|
||||||
this->get_config();
|
|
||||||
this->flag_block_gui();
|
|
||||||
this->event();
|
|
||||||
}
|
|
||||||
|
|
||||||
void flag_block_gui(){
|
|
||||||
if (flag_datetime==true){
|
|
||||||
_numTimeHrs->set_sensitive(false);
|
|
||||||
_numTimeMin->set_sensitive(false);
|
|
||||||
}
|
|
||||||
else if (flag_timezone==true){
|
|
||||||
_cbRegion->set_sensitive(false);
|
|
||||||
_cbZone->set_sensitive(false);
|
|
||||||
_cbRegionGlob->set_sensitive(false);
|
|
||||||
_cbZoneGlob->set_sensitive(false);
|
|
||||||
_btnChooseDate->set_sensitive(false);
|
|
||||||
}
|
|
||||||
else if (flag_ntp==true){
|
|
||||||
_cbxSynchronizeNtp->set_sensitive(false);
|
|
||||||
_cbDhcp->set_sensitive(false);
|
|
||||||
_txtNtpServer->set_sensitive(false);
|
|
||||||
}
|
|
||||||
else if (flag_update==true){
|
|
||||||
_btnUpdateDateTime->set_sensitive(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void add_CSS(){
|
|
||||||
Glib::RefPtr<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
|
|
||||||
cssProvider->load_from_path("style.css");
|
|
||||||
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
|
|
||||||
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();//get default screen
|
|
||||||
styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application
|
|
||||||
Glib::RefPtr<Gtk::StyleContext> context = _btnUpdateDateTime->get_style_context();
|
|
||||||
context->add_class("myButton");
|
|
||||||
}
|
|
||||||
|
|
||||||
void get_builder(){
|
|
||||||
builder->set_translation_domain(app_name);
|
|
||||||
|
|
||||||
builder->get_widget("btnUpdateDateTime", _btnUpdateDateTime);
|
|
||||||
builder->get_widget("btnChooseDate", _btnChooseDate);
|
|
||||||
builder->get_widget("btnMessClose", _btnMessClose);
|
|
||||||
builder->get_widget("cbxSynchronizeNtp", _cbxSynchronizeNtp);
|
|
||||||
builder->get_widget("popCalendar", _popCalendar);
|
|
||||||
builder->get_widget("numTimeHrs", _numTimeHrs);
|
|
||||||
builder->get_widget("numTimeMin", _numTimeMin);
|
|
||||||
builder->get_widget("cbDhcp", _cbDhcp);
|
|
||||||
builder->get_widget("txtDate", _txtDate);
|
|
||||||
builder->get_widget("cbRegion", _cbRegion);
|
|
||||||
builder->get_widget("cbRegionGlob", _cbRegionGlob);
|
|
||||||
builder->get_widget("cbZone", _cbZone);
|
|
||||||
builder->get_widget("cbZoneGlob", _cbZoneGlob);
|
|
||||||
builder->get_widget("txtNtpServer", _txtNtpServer);
|
|
||||||
builder->get_widget("cldrDate", _cldrDate);
|
|
||||||
builder->get_widget("mess_dchp", _mess_dchp);
|
|
||||||
//this->add_CSS();
|
|
||||||
}
|
|
||||||
void event(){
|
|
||||||
_btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close));
|
|
||||||
_cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar));
|
|
||||||
_cbxSynchronizeNtp->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle));
|
|
||||||
_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));
|
|
||||||
_cbRegionGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::append_zone_glob));
|
|
||||||
_cbZone->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone));
|
|
||||||
_cbZoneGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone_glob));
|
|
||||||
_txtNtpServer->signal_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_ntp));
|
|
||||||
//_txtNtpServer->grab_focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gui_mess_close(){
|
|
||||||
_mess_dchp->hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool focus_ntp(GdkEventFocus* event){
|
|
||||||
if (_txtNtpServer->get_text()=="" || _txtNtpServer->get_text()==" "){
|
|
||||||
_mess_dchp->show();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
string cmd = "";
|
|
||||||
cmd = "/usr/bin/ubconfig set network NTPSERVERS=" + _txtNtpServer->get_text();
|
|
||||||
this->call(cmd.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void event_entry_cbDhcp(){
|
|
||||||
Glib::ustring str_dhcp = _cbDhcp->get_active_text();
|
|
||||||
if (str_dhcp.length()!=0){
|
|
||||||
if (str_dhcp=="DHCP"){
|
|
||||||
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
|
|
||||||
system(cmd.c_str());
|
|
||||||
_txtNtpServer->set_sensitive(false);
|
|
||||||
_cbDhcp->set_active(0);
|
|
||||||
_txtNtpServer->set_text("");
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
string str_dhcp = this->call("/usr/bin/ubconfig get network NTPSERVERS");
|
|
||||||
|
|
||||||
if ((str_dhcp!="") && (str_dhcp!="(null)") ){
|
|
||||||
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"){
|
|
||||||
|
|
||||||
|
|
||||||
_txtNtpServer->set_text(str_dhcp);
|
|
||||||
}
|
|
||||||
_txtNtpServer->set_sensitive(true);
|
|
||||||
_cbDhcp->set_active(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
|
|
||||||
system(cmd.c_str());
|
|
||||||
//_txtNtpServer->set_sensitive(false);
|
|
||||||
_cbDhcp->set_active(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void get_calendar(){
|
|
||||||
_cldrDate->get_date(year, month, day);
|
|
||||||
string str_month = "";
|
|
||||||
string str_day = "";
|
|
||||||
month+=1;
|
|
||||||
if (month <10){
|
|
||||||
str_month = "0"+to_string(month);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_month = to_string(month);
|
|
||||||
}
|
|
||||||
if (day <10){
|
|
||||||
str_day = "0"+to_string(day);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_day = to_string(day);
|
|
||||||
}
|
|
||||||
string date = str_day + '.' + str_month + '.' + to_string(year);
|
|
||||||
_txtDate->set_text(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void calendar_show(){
|
|
||||||
time_t now = time(0);
|
|
||||||
tm *ltm = localtime(&now);
|
|
||||||
unsigned int y=1900+ ltm->tm_year;
|
|
||||||
unsigned int m=ltm->tm_mon;
|
|
||||||
unsigned int d=ltm->tm_mday;
|
|
||||||
|
|
||||||
|
|
||||||
_cldrDate->select_month(m,y);
|
|
||||||
_cldrDate->select_day(d);
|
|
||||||
_popCalendar->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
void enry_dhcp_mess(){
|
|
||||||
string str_dhcp = this->call("/usr/bin/ubconfig get network NTPSERVERS");
|
|
||||||
if ((str_dhcp!="") && (str_dhcp!="(null)")){
|
|
||||||
_cbxSynchronizeNtp->set_active(1);
|
|
||||||
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(0);
|
|
||||||
_txtNtpServer->set_sensitive(false);
|
|
||||||
//_cbxSynchronizeNtp->set_sensitive(true);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if (str_dhcp==""){
|
|
||||||
_mess_dchp->show();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
_cbDhcp->set_active(1);
|
|
||||||
//_txtNtpServer->set_sensitive(true);
|
|
||||||
//_cbxSynchronizeNtp->set_sensitive(false);
|
|
||||||
_txtNtpServer->set_text(str_dhcp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//_cbxDhcp->set_active(true);
|
|
||||||
this->set_ntp_toggle();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
_cbxSynchronizeNtp->set_active(0);
|
|
||||||
_cbDhcp->set_sensitive(0);
|
|
||||||
_txtNtpServer->set_sensitive(0);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void get_config(){
|
|
||||||
this->read_file();
|
|
||||||
this->update_hour_minute();
|
|
||||||
this->update_calendar();
|
|
||||||
//this->event_entry_cbDhcp();
|
|
||||||
this->enry_dhcp_mess();
|
|
||||||
|
|
||||||
string str_ntp = this->call("systemctl status ntpd.service systemd-timesyncd.service | grep \"Active: active\"");
|
|
||||||
if (str_ntp.length()<50) {
|
|
||||||
_cbxSynchronizeNtp->set_active(false);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
_cbxSynchronizeNtp->set_active(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
string read_reg_zon_cfg = this->call("/usr/bin/ubconfig get clock ZONE");
|
|
||||||
if ((read_reg_zon_cfg != "") && (read_reg_zon_cfg !="(null)")){
|
|
||||||
read_reg_zon_cfg = read_reg_zon_cfg.substr(read_reg_zon_cfg.find("=")+1,read_reg_zon_cfg.length());
|
|
||||||
read_reg_zon_cfg = read_reg_zon_cfg.substr(0,read_reg_zon_cfg.find("\n"));
|
|
||||||
string str_filling_reg = read_reg_zon_cfg.substr(0,read_reg_zon_cfg.find("/"));
|
|
||||||
string str_filling_zon = read_reg_zon_cfg.substr(read_reg_zon_cfg.find("/")+1,read_reg_zon_cfg.length());
|
|
||||||
str_filling_zon = str_filling_zon.substr(0,str_filling_zon.find("\n"));
|
|
||||||
string str_zone_check = "";
|
|
||||||
this->append_region_zone(str_filling_reg,str_filling_zon);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this->append_region_zone("Asia","Omsk");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void enter_zone(){
|
|
||||||
Glib::ustring zone_text = _cbZone->get_active_text();
|
|
||||||
Glib::ustring reg_text = _cbRegion->get_active_text();
|
|
||||||
if(!(zone_text.empty()) && !(reg_text.empty())){
|
|
||||||
str_zone=zone_text.substr(zone_text.find(") ")+2,zone_text.length());
|
|
||||||
str_region=reg_text;
|
|
||||||
string cmd = "timedatectl set-timezone '" + str_region +"/" + str_zone+"'";
|
|
||||||
system(cmd.c_str());
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_zone="";
|
|
||||||
str_region="";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void enter_zone_glob(){
|
|
||||||
Glib::ustring zone_text = _cbZoneGlob->get_active_text();
|
|
||||||
Glib::ustring reg_text = _cbRegionGlob->get_active_text();
|
|
||||||
if(!(zone_text.empty()) && !(reg_text.empty())){
|
|
||||||
str_zoneGlob = zone_text.substr(zone_text.find(") ")+2,zone_text.length());
|
|
||||||
str_region_glob = reg_text;
|
|
||||||
string cmd = "/usr/bin/ubconfig set clock ZONE=" +str_region_glob +"/" + str_zoneGlob;
|
|
||||||
system(cmd.c_str());
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_zoneGlob="";
|
|
||||||
str_region_glob="";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_ntp_toggle(){
|
|
||||||
bool flag = _cbxSynchronizeNtp->get_active();
|
|
||||||
if (flag_datetime==true){
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
_numTimeHrs->set_sensitive(!flag);
|
|
||||||
_numTimeMin->set_sensitive(!flag);
|
|
||||||
_btnChooseDate->set_sensitive(!flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
//_txtDate->set_sensitive(!flag);
|
|
||||||
|
|
||||||
//_btnUpdateDateTime->set_sensitive(!flag);
|
|
||||||
if (flag==false){
|
|
||||||
system("systemctl --now disable systemd-timesyncd.service ntpd.service");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
system("systemctl --now enable systemd-timesyncd.service");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void append_region_zone(string region, string zone){
|
|
||||||
int index = 0;
|
|
||||||
for ( const auto &text : time_reg_map ) {
|
|
||||||
_cbRegion->append(text.first);
|
|
||||||
_cbRegionGlob->append(text.first);
|
|
||||||
if (text.first == region){
|
|
||||||
_cbRegionGlob->set_active(index);
|
|
||||||
_cbRegion->set_active(index);
|
|
||||||
|
|
||||||
}
|
|
||||||
index+=1;
|
|
||||||
}
|
|
||||||
index = 0;
|
|
||||||
string cheek_zone = "";
|
|
||||||
for (const auto &_str_zone : time_reg_map.at(region)){
|
|
||||||
_cbZone->append(_str_zone);
|
|
||||||
_cbZoneGlob->append(_str_zone);
|
|
||||||
if (_str_zone!=""){
|
|
||||||
cheek_zone = _str_zone.substr(_str_zone.find(") ")+2,_str_zone.length());
|
|
||||||
if (cheek_zone == zone){
|
|
||||||
_cbZone->set_active(index);
|
|
||||||
_cbZoneGlob->set_active(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
index+=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
string call(string cmd){
|
|
||||||
FILE *fp;
|
|
||||||
int status;
|
|
||||||
char path[PATH_MAX];
|
|
||||||
fp = popen(cmd.c_str(), "r");
|
|
||||||
if (fp == NULL){
|
|
||||||
//return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
while (fgets(path, PATH_MAX, fp) != NULL){
|
|
||||||
printf("%s", path);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
status = pclose(fp);
|
|
||||||
if (status == -1) {
|
|
||||||
//return "";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//return "";
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
void append_zone(){
|
|
||||||
Glib::ustring text = _cbRegion->get_active_text();
|
|
||||||
_cbZone->remove_all();
|
|
||||||
|
|
||||||
if(!(text.empty())){
|
|
||||||
str_region = text;
|
|
||||||
for (const auto &_str_zone : time_reg_map.at(str_region)){
|
|
||||||
_cbZone->append(_str_zone);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void append_zone_glob(){
|
|
||||||
Glib::ustring text = _cbRegionGlob->get_active_text();
|
|
||||||
_cbZoneGlob->remove_all();
|
|
||||||
if(!(text.empty())){
|
|
||||||
str_region_glob = text;
|
|
||||||
for (const auto &_str_zone : time_reg_map.at(str_region_glob)){
|
|
||||||
_cbZoneGlob->append(_str_zone);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
void update_time_date(){
|
|
||||||
this->enter_zone();
|
|
||||||
bool flag = _cbxSynchronizeNtp->get_active();
|
|
||||||
if (flag==false){
|
|
||||||
hour = _numTimeHrs->get_value_as_int();
|
|
||||||
minute = _numTimeMin->get_value_as_int();
|
|
||||||
time_t now = time(0);
|
|
||||||
tm *ltm = localtime(&now);
|
|
||||||
string cmd = "timedatectl set-time \""+
|
|
||||||
to_string(hour) + ":" + to_string(minute)
|
|
||||||
+ ":" + to_string(ltm->tm_sec) +"\"";
|
|
||||||
system(cmd.c_str());
|
|
||||||
if ((year==0) && (month == 0) && (day == 0)){
|
|
||||||
time_t now = time(0);
|
|
||||||
tm *ltm = localtime(&now);
|
|
||||||
year=1900+ ltm->tm_year;
|
|
||||||
month=ltm->tm_mon;
|
|
||||||
day=ltm->tm_mday;
|
|
||||||
}
|
|
||||||
string str_month = "";
|
|
||||||
string str_day = "";
|
|
||||||
if (month <10){
|
|
||||||
str_month = "0"+to_string(month+1);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_month = to_string(month);
|
|
||||||
}
|
|
||||||
if (day <10){
|
|
||||||
str_day = "0"+to_string(day);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_day = to_string(day);
|
|
||||||
}
|
|
||||||
string cmd1 = "date --set=\"" +to_string(year)+
|
|
||||||
str_month+str_day + " " +to_string(hour) + ":" +
|
|
||||||
to_string(minute)+"\"";
|
|
||||||
system(cmd1.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
void update_hour_minute(){
|
|
||||||
time_t now = time(0);
|
|
||||||
tm *ltm = localtime(&now);
|
|
||||||
_numTimeHrs->set_value(ltm->tm_hour);
|
|
||||||
_numTimeMin->set_value(ltm->tm_min);
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_calendar(){
|
|
||||||
time_t now = time(0);
|
|
||||||
tm *ltm = localtime(&now);
|
|
||||||
int year = 1900 + (int)ltm->tm_year;
|
|
||||||
string str_month = "";
|
|
||||||
string str_day = "";
|
|
||||||
unsigned int month, day;
|
|
||||||
month=ltm->tm_mon+1;
|
|
||||||
day=ltm->tm_mday;
|
|
||||||
if (month <=10){
|
|
||||||
str_month = "0"+to_string(month);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_month = to_string(month);
|
|
||||||
}
|
|
||||||
if (day <10){
|
|
||||||
str_day = "0"+to_string(day);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str_day = to_string(day);
|
|
||||||
}
|
|
||||||
string date = str_day + '.' + str_month + '.' + to_string(year);
|
|
||||||
_txtDate->set_text(date);
|
|
||||||
}
|
|
||||||
void read_file(){
|
|
||||||
std::string line;
|
|
||||||
namespace fs = std::filesystem;
|
|
||||||
for (const auto & entry : fs::directory_iterator("/usr/share/ubl-settings-datetime/reg/")){
|
|
||||||
std::ifstream in(entry.path()); // окрываем файл для чтения
|
|
||||||
if (in.is_open())
|
|
||||||
{
|
|
||||||
vector<string> zone;
|
|
||||||
zone.push_back("");
|
|
||||||
while (getline(in, line))
|
|
||||||
{
|
|
||||||
zone.push_back(string(gettext(line.c_str())));
|
|
||||||
}
|
|
||||||
string key_reg = entry.path().filename().string();
|
|
||||||
key_reg = string(gettext(key_reg.c_str()));
|
|
||||||
time_reg_map.insert({key_reg, zone});
|
|
||||||
}
|
|
||||||
in.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
Glib::RefPtr<Gtk::Builder> builder;
|
|
||||||
Gtk::Button *_btnUpdateDateTime;
|
|
||||||
Gtk::Button *_btnChooseDate;
|
|
||||||
Gtk::Button *_btnMessClose;
|
|
||||||
Gtk::ComboBoxText *_cbDhcp;
|
|
||||||
Gtk::SpinButton *_numTimeHrs;
|
|
||||||
Gtk::SpinButton *_numTimeMin;
|
|
||||||
Gtk::CheckButton *_cbxSynchronizeNtp;
|
|
||||||
|
|
||||||
Gtk::Entry *_txtDate;
|
|
||||||
Gtk::ComboBoxText *_cbRegion;
|
|
||||||
Gtk::ComboBoxText *_cbRegionGlob;
|
|
||||||
Gtk::ComboBoxText *_cbZone;
|
|
||||||
Gtk::ComboBoxText *_cbZoneGlob;
|
|
||||||
Gtk::Entry *_txtNtpServer;
|
|
||||||
Gtk::MessageDialog *_mess_dchp;
|
|
||||||
Gtk::Popover *_popCalendar;
|
|
||||||
Gtk::Calendar *_cldrDate;
|
|
||||||
unsigned int year, month, day;
|
|
||||||
int hour;
|
|
||||||
int minute;
|
|
||||||
string str_region="";
|
|
||||||
string str_region_glob="";
|
|
||||||
string str_txtDate;
|
|
||||||
string str_txtNtpServer;
|
|
||||||
string str_zone="";
|
|
||||||
string str_zoneGlob;
|
|
||||||
std::map <string, vector<string>> time_reg_map;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class SettingsPlug : public Gtk::Plug
|
|
||||||
{
|
|
||||||
|
|
||||||
public:
|
|
||||||
Gtk::Window *window;
|
|
||||||
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder)
|
|
||||||
: 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);
|
|
||||||
|
|
||||||
show_all_children();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
Gtk::Widget *plugBox;
|
|
||||||
Gtk::Widget *parent;
|
|
||||||
};
|
|
||||||
|
|
||||||
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");
|
|
||||||
cout << "Параметры командной строки --lock-datetime\n --lock-timezone\n --lock-ntp\n --lock-update\n" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
|
||||||
|
|
||||||
//path_app=filesystem::current_path();
|
|
||||||
//path_app+="/";
|
|
||||||
//cout << *argv[0] << endl;
|
|
||||||
//app_name=to_string(*argv[0]);
|
|
||||||
//app_name=app_name.substr(1, app_name.length());
|
|
||||||
string str_cmd_argv = "";
|
|
||||||
for (int i=1; i<argc; i++){
|
|
||||||
str_cmd_argv+= to_string(*argv[i]) + " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (geteuid()!=0){
|
|
||||||
// string cmd = "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY " + path_app + app_name + " " + str_cmd_argv ;
|
|
||||||
string cmd = "pkexec " + app_name + " " + str_cmd_argv ;
|
|
||||||
system(cmd.c_str());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
|
|
||||||
auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade");
|
|
||||||
if (argc==1){
|
|
||||||
//setlocale(LC_ALL, ".");
|
|
||||||
//bindtextdomain(app_name.c_str(), ".");
|
|
||||||
//textdomain(app_name.c_str());
|
|
||||||
//textdomain(app_name);
|
|
||||||
int index=1;
|
|
||||||
cout << argv[0] << endl;
|
|
||||||
for (int i=0; i<argc; i++){
|
|
||||||
if (argv[i]=="--help"){
|
|
||||||
help();
|
|
||||||
}
|
|
||||||
else if (strcmp (argv[i], "--lock-datetime")==0){
|
|
||||||
flag_datetime=true;
|
|
||||||
}
|
|
||||||
else if (strcmp (argv[i], "--lock-timezone")==0){
|
|
||||||
flag_timezone=true;
|
|
||||||
}
|
|
||||||
else if (strcmp (argv[i], "--lock-ntp")==0){
|
|
||||||
flag_ntp=true;
|
|
||||||
}
|
|
||||||
else if (strcmp (argv[i], "--lock-update")==0){
|
|
||||||
flag_update=true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
MainWindow* wnd = nullptr;
|
|
||||||
builder->get_widget_derived("window", wnd);
|
|
||||||
auto r = app->run(*wnd);
|
|
||||||
|
|
||||||
delete wnd;
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Glib::init();
|
|
||||||
setlocale(LC_ALL, "");
|
|
||||||
Glib::OptionContext context;
|
|
||||||
|
|
||||||
CmdArgParser parser{
|
|
||||||
"Socket ID",
|
|
||||||
"Command line argument for socket ID communication.",
|
|
||||||
"No help available, sorry"
|
|
||||||
};
|
|
||||||
|
|
||||||
context.set_main_group(parser);
|
|
||||||
context.parse(argc, argv);
|
|
||||||
|
|
||||||
::Window socketID = parser.GetSocketID();
|
|
||||||
|
|
||||||
// Handle plug:
|
|
||||||
SettingsPlug plug{socketID, builder};
|
|
||||||
plug.show();
|
|
||||||
|
|
||||||
app->run(plug);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,141 @@
|
|||||||
|
#ifndef UBL_SETTINGS_DATETIME_H
|
||||||
|
#define UBL_SETTINGS_DATETIME_H
|
||||||
|
#include <gtkmm/window.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iostream>
|
||||||
|
#include <memory>
|
||||||
|
#include <gtkmm.h>
|
||||||
|
#include <ostream>
|
||||||
|
#include <string>
|
||||||
|
#include <ctime>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <fstream>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <glibmm/i18n.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <gtkmm/plug.h>
|
||||||
|
#include <gtkmm/stock.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
extern string path_app;
|
||||||
|
extern string path_glade;
|
||||||
|
extern string app_name;
|
||||||
|
extern string path_locale;
|
||||||
|
extern string path_css;
|
||||||
|
extern bool flag_datetime;
|
||||||
|
extern bool flag_timezone;
|
||||||
|
extern bool flag_ntp;
|
||||||
|
extern bool flag_update;
|
||||||
|
|
||||||
|
class CmdArgParser : public Glib::OptionGroup
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help);
|
||||||
|
::Window GetSocketID() const;
|
||||||
|
private:
|
||||||
|
int m_socketID = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class MainWindow : public Gtk::ApplicationWindow {
|
||||||
|
public:
|
||||||
|
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
|
||||||
|
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder);
|
||||||
|
virtual ~MainWindow() = default;
|
||||||
|
void post_entry_data();
|
||||||
|
void lacalization();
|
||||||
|
void settings();
|
||||||
|
void flag_block_gui();
|
||||||
|
void add_CSS();
|
||||||
|
void get_builder();
|
||||||
|
void event();
|
||||||
|
void gui_mess_close();
|
||||||
|
bool focus_ntp(GdkEventFocus* event);
|
||||||
|
void event_entry_cbDhcp();
|
||||||
|
void get_calendar();
|
||||||
|
void calendar_show();
|
||||||
|
void enry_dhcp_mess();
|
||||||
|
void get_config();
|
||||||
|
void enter_zone();
|
||||||
|
void enter_zone_glob();
|
||||||
|
void set_ntp_toggle();
|
||||||
|
void append_region_zone(string region, string zone);
|
||||||
|
string call(string cmd);
|
||||||
|
void append_zone();
|
||||||
|
void append_zone_glob();
|
||||||
|
void update_time_date();
|
||||||
|
void update_hour_minute();
|
||||||
|
void update_calendar();
|
||||||
|
void read_file();
|
||||||
|
void parse_text_date();
|
||||||
|
void hardware_clock();
|
||||||
|
void set_ntp_toggle_glob();
|
||||||
|
vector<std::string> split(const std::string &s, char delim);
|
||||||
|
private:
|
||||||
|
Glib::RefPtr<Gtk::Builder> builder;
|
||||||
|
Gtk::Button *_btnUpdateDateTime;
|
||||||
|
Gtk::Button *_btnChooseDate;
|
||||||
|
Gtk::Button *_btnMessClose;
|
||||||
|
Gtk::ComboBoxText *_cbDhcp;
|
||||||
|
Gtk::SpinButton *_numTimeHrs;
|
||||||
|
Gtk::SpinButton *_numTimeMin;
|
||||||
|
Gtk::CheckButton *_cbxSynchronizeNtpGlob;
|
||||||
|
Gtk::Box *_boxColor;
|
||||||
|
Gtk::Entry *_txtDate;
|
||||||
|
Gtk::ComboBoxText *_cbRegion;
|
||||||
|
Gtk::ComboBoxText *_cbRegionGlob;
|
||||||
|
Gtk::ComboBoxText *_cbZone;
|
||||||
|
Gtk::ComboBoxText *_cbZoneGlob;
|
||||||
|
Gtk::Entry *_txtNtpServer;
|
||||||
|
Gtk::Window *_mess_dchp;
|
||||||
|
Gtk::Popover *_popCalendar;
|
||||||
|
Gtk::Calendar *_cldrDate;
|
||||||
|
Gtk::Label *_lblMessage;
|
||||||
|
Gtk::Label *_lblDateTimeSetting;
|
||||||
|
Gtk::Label *_lblHead;
|
||||||
|
Gtk::Label *_lblTime;
|
||||||
|
Gtk::Label *_lblData;
|
||||||
|
Gtk::Label *_lblTimeZone;
|
||||||
|
Gtk::Label *_lblReg;
|
||||||
|
Gtk::Label *_lblZone;
|
||||||
|
Gtk::Label *_lblRegGlob;
|
||||||
|
Gtk::Label *_lblZone1Glob;
|
||||||
|
Gtk::Label *_lblTimeZoneGlob;
|
||||||
|
Gtk::Label *_lblSynchronizebChk;
|
||||||
|
Gtk::Label *_lblSynchronizebChkGLob;
|
||||||
|
Gtk::Label *_lblSynchronizeBtn;
|
||||||
|
Gtk::Label *_lblDateTimeSettingGlob;
|
||||||
|
Gtk::Label *_lblTimeBios;
|
||||||
|
Gtk::Button *_btnHardwareTime;
|
||||||
|
Gtk::CheckButton *_cbxSynchronizeNtp;
|
||||||
|
std::map <string, vector<string>> time_reg_map;
|
||||||
|
unsigned int year=0;
|
||||||
|
unsigned int month=0;
|
||||||
|
unsigned int day=0;
|
||||||
|
int hour;
|
||||||
|
int minute;
|
||||||
|
string str_region="";
|
||||||
|
string str_region_glob="";
|
||||||
|
string str_txtDate;
|
||||||
|
string str_txtNtpServer;
|
||||||
|
string str_zone="";
|
||||||
|
string str_zoneGlob;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SettingsPlug : public Gtk::Plug
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Gtk::Window *window;
|
||||||
|
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder);
|
||||||
|
private:
|
||||||
|
Gtk::Widget *plugBox;
|
||||||
|
Gtk::Widget *parent;
|
||||||
|
};
|
||||||
|
void help();
|
||||||
|
#endif
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
.cssboxColor1{
|
||||||
|
background: url("/usr/share/ubl-settings-datetime/images/bg_top.png") no-repeat;
|
||||||
|
}
|
||||||
|
.textHead{
|
||||||
|
text-shadow: 1px 1px #ffffff;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue