Commit 657480f4 authored by Carit Zhu's avatar Carit Zhu 🎱

Add desktop file for yocto and change ui file

parent 8acd7437
...@@ -45,10 +45,10 @@ LIBS += $(GLIB_LIBS) $(GTK3_LIBS) ...@@ -45,10 +45,10 @@ LIBS += $(GLIB_LIBS) $(GTK3_LIBS)
objects = main.o objects = main.o
# Default target # Default target
all: timemanager all: dt-manager-editor
# Build objects # Build objects
timemanager: $(objects) dt-manager-editor: $(objects)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS)
# Temp objects # Temp objects
...@@ -58,4 +58,4 @@ timemanager: $(objects) ...@@ -58,4 +58,4 @@ timemanager: $(objects)
# Clean # Clean
.PHONY: clean .PHONY: clean
clean: clean:
rm -f *.o timemanager rm -f *.o dt-manager-editor
[Desktop Entry]
Name=Date & Time
Exec=dt-manager-editor
Terminal=false
Type=Application
Comment=Set date and time
StartupNotify=false
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=TimeManager
X-GNOME-Bugzilla-Component=dt-manager-editor
Categories=GNOME;GTK;Settings;
NotShowIn=KDE;GNOME;
Name[en_US]=dt-manager-editor
...@@ -71,11 +71,16 @@ static void set_timezone(char *timezone) { ...@@ -71,11 +71,16 @@ static void set_timezone(char *timezone) {
} }
} }
static void set_ntp(char *enable) {
set_timedatectl("set-ntp", enable);
}
static void set_date_time(const char *date, const char *hour, const char *min, const char *sec) { static void set_date_time(const char *date, const char *hour, const char *min, const char *sec) {
char data[32] = {0}; char data[32] = {0};
if (strcmp(active_date, date)) { if (strcmp(active_date, date)) {
sprintf(data, "'%s %s:%s:%s'", date, hour, min, sec); sprintf(data, "'%s %s:%s:%s'", date, hour, min, sec);
set_ntp("no"); // set ntp as no before seting time/date
set_timedatectl("set-time", data); set_timedatectl("set-time", data);
strcpy(active_date, date); strcpy(active_date, date);
strcpy(active_hour, hour); strcpy(active_hour, hour);
...@@ -83,6 +88,7 @@ static void set_date_time(const char *date, const char *hour, const char *min, c ...@@ -83,6 +88,7 @@ static void set_date_time(const char *date, const char *hour, const char *min, c
strcpy(active_sec, sec); strcpy(active_sec, sec);
} else if (strcmp(active_hour, hour) || strcmp(active_min, min) || strcmp(active_sec, sec)) { } else if (strcmp(active_hour, hour) || strcmp(active_min, min) || strcmp(active_sec, sec)) {
sprintf(data, "'%s:%s:%s'", hour, min, sec); sprintf(data, "'%s:%s:%s'", hour, min, sec);
set_ntp("no"); // set ntp as no before seting time/date
set_timedatectl("set-time", data); set_timedatectl("set-time", data);
strcpy(active_hour, hour); strcpy(active_hour, hour);
strcpy(active_min, min); strcpy(active_min, min);
...@@ -105,7 +111,11 @@ static void get_time_date_status() { ...@@ -105,7 +111,11 @@ static void get_time_date_status() {
buf = strchr(time_status[i], ':'); buf = strchr(time_status[i], ':');
if (buf != NULL) { if (buf != NULL) {
get_timezone(buf + 1, timezone_cur); get_timezone(buf + 1, timezone_cur);
strcpy(timezone_new, timezone_cur); if (!strcmp(timezone_cur, "Universal")) {
strcpy(timezone_new, "UTC"); // Set default "Universal" timezone as UTC.
} else {
strcpy(timezone_new, timezone_cur);
}
} }
} }
} }
...@@ -345,10 +355,25 @@ static int gobjects_init(GtkBuilder *builder, GtkWidget *dialog) { ...@@ -345,10 +355,25 @@ static int gobjects_init(GtkBuilder *builder, GtkWidget *dialog) {
int main(int argc, char **argv) { int main(int argc, char **argv) {
GtkBuilder *builder = gtk_builder_new(); GtkBuilder *builder = gtk_builder_new();
GtkWidget *dialog; GtkWidget *dialog;
char ui_path[64] = "timemanager.ui";
if (argc >= 3 && (argc % 2 != 0))
{
for (int i = 1; i < argc; i+=2)
{
if (!strcmp(argv[i], "--ui"))
{
strncpy(ui_path, argv[i + 1], 63);
}
}
}
#ifdef DEBUG
g_print("[DEBUG] ui path is %s\n", ui_path);
#endif
gtk_init(&argc, &argv); gtk_init(&argc, &argv);
if (!gtk_builder_add_from_file(builder, "timemanager.ui", NULL)) { if (!gtk_builder_add_from_file(builder, ui_path, NULL)) {
g_print("[ERROR] can not load glade file\n"); g_print("[ERROR] can not load glade file\n");
return -1; return -1;
} }
...@@ -358,9 +383,9 @@ int main(int argc, char **argv) { ...@@ -358,9 +383,9 @@ int main(int argc, char **argv) {
g_print("[ERROR] can not get dialog object\n"); g_print("[ERROR] can not get dialog object\n");
return -1; return -1;
} }
gtk_window_set_title(GTK_WINDOW(dialog), "Date & Time"); gtk_window_set_title(GTK_WINDOW(dialog), "Date & Time");
gtk_window_set_default_size(GTK_WINDOW(dialog), 400, 200); gtk_window_set_default_size(GTK_WINDOW(dialog), 320, 240);
gtk_builder_connect_signals(builder, NULL); gtk_builder_connect_signals(builder, NULL);
g_signal_connect(dialog, GTK_EVENT_DESTROY, G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(dialog, GTK_EVENT_DESTROY, G_CALLBACK(gtk_main_quit), NULL);
......
...@@ -3,12 +3,19 @@ ...@@ -3,12 +3,19 @@
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk+" version="3.12"/>
<object class="GtkDialog" id="dialog-date_time"> <object class="GtkDialog" id="dialog-date_time">
<property name="width_request">320</property>
<property name="height_request">240</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="title" translatable="yes">Date &amp; Time</property>
<property name="window_position">center</property> <property name="window_position">center</property>
<property name="type_hint">utility</property> <property name="default_width">320</property>
<property name="default_height">240</property>
<property name="type_hint">dialog</property>
<property name="gravity">center</property> <property name="gravity">center</property>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox-date_time"> <object class="GtkBox" id="dialog-vbox-date_time">
<property name="width_request">320</property>
<property name="height_request">160</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">2</property> <property name="spacing">2</property>
...@@ -56,143 +63,207 @@ ...@@ -56,143 +63,207 @@
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkBox" id="box-date"> <object class="GtkBox" id="box-date">
<property name="width_request">120</property>
<property name="height_request">60</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<child> <child>
<object class="GtkLabel" id="label-date"> <object class="GtkLabel" id="label-date">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Date</property> <property name="margin_top">4</property>
<property name="label" translatable="yes">Date:</property>
<property name="ellipsize">start</property>
<property name="width_chars">16</property>
<property name="max_width_chars">16</property>
<attributes>
<attribute name="style" value="normal"/>
<attribute name="weight" value="ultrabold"/>
</attributes>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkEntry" id="entry-date">
</child> <property name="width_request">120</property>
<child> <property name="height_request">30</property>
<placeholder/> <property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">2</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry-date">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_left">48</property>
<property name="margin_right">48</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="padding">2</property> <property name="position">0</property>
<property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box-time"> <object class="GtkBox" id="box-time">
<property name="width_request">120</property>
<property name="height_request">30</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="margin_top">2</property>
<property name="margin_bottom">2</property>
<child> <child>
<object class="GtkLabel" id="label-time"> <object class="GtkLabel" id="label-time">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Time</property> <property name="label" translatable="yes">Time:</property>
<property name="wrap">True</property>
<property name="width_chars">16</property>
<property name="max_width_chars">16</property>
<attributes>
<attribute name="style" value="normal"/>
<attribute name="weight" value="bold"/>
</attributes>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box-time_clock">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child> <child>
<object class="GtkComboBoxText" id="comboboxtext-hour"> <object class="GtkComboBoxText" id="comboboxtext-hour">
<property name="width_request">40</property>
<property name="height_request">30</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="resize_mode">immediate</property>
<property name="active">0</property> <property name="active">0</property>
<property name="button_sensitivity">on</property> <property name="button_sensitivity">on</property>
<property name="has_entry">True</property> <property name="has_entry">True</property>
<child internal-child="entry"> <child internal-child="entry">
<object class="GtkEntry" id="comboboxtext-entry-hour"> <object class="GtkEntry" id="comboboxtext-entry-hour">
<property name="can_focus">False</property> <property name="width_request">40</property>
<property name="can_focus">True</property>
<property name="max_length">2</property>
<property name="input_purpose">number</property>
</object> </object>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="padding">2</property> <property name="padding">2</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box1">
<property name="can_focus">False</property>
<property name="margin_top">2</property>
<property name="margin_bottom">2</property>
<child>
<object class="GtkLabel" id="label1">
<property name="can_focus">False</property>
<property name="width_chars">16</property>
<property name="max_width_chars">16</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText" id="comboboxtext-minute"> <object class="GtkComboBoxText" id="comboboxtext-minute">
<property name="width_request">40</property>
<property name="height_request">30</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="active">0</property> <property name="active">0</property>
<property name="button_sensitivity">on</property> <property name="button_sensitivity">on</property>
<property name="has_entry">True</property> <property name="has_entry">True</property>
<child internal-child="entry"> <child internal-child="entry">
<object class="GtkEntry" id="comboboxtext-entry-minute"> <object class="GtkEntry" id="comboboxtext-entry-minute">
<property name="can_focus">False</property> <property name="can_focus">True</property>
<property name="input_purpose">number</property>
</object> </object>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="padding">2</property> <property name="padding">2</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box2">
<property name="can_focus">False</property>
<property name="margin_top">2</property>
<property name="margin_bottom">2</property>
<child>
<object class="GtkLabel" id="label2">
<property name="can_focus">False</property>
<property name="width_chars">16</property>
<property name="max_width_chars">16</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child> <child>
<object class="GtkComboBoxText" id="comboboxtext-second"> <object class="GtkComboBoxText" id="comboboxtext-second">
<property name="width_request">40</property>
<property name="height_request">30</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="active">0</property> <property name="active">0</property>
<property name="button_sensitivity">on</property> <property name="button_sensitivity">on</property>
<property name="has_entry">True</property> <property name="has_entry">True</property>
<child internal-child="entry"> <child internal-child="entry">
<object class="GtkEntry" id="comboboxtext-entry-second"> <object class="GtkEntry" id="comboboxtext-entry-second">
<property name="can_focus">False</property> <property name="can_focus">True</property>
<property name="input_purpose">number</property>
</object> </object>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="padding">2</property> <property name="padding">2</property>
<property name="position">2</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">3</property>
</packing> </packing>
...@@ -201,44 +272,46 @@ ...@@ -201,44 +272,46 @@
<object class="GtkBox" id="box-timezone"> <object class="GtkBox" id="box-timezone">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<child> <child>
<object class="GtkLabel" id="label-timezone"> <object class="GtkLabel" id="label-timezone">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">TimeZone</property> <property name="label" translatable="yes">TimeZone:</property>
<property name="width_chars">16</property>
<property name="max_width_chars">16</property>
<attributes>
<attribute name="style" value="normal"/>
<attribute name="weight" value="bold"/>
</attributes>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">False</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<placeholder/> <object class="GtkComboBox" id="combobox-timezone">
</child> <property name="width_request">120</property>
<child> <property name="height_request">30</property>
<placeholder/> <property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="padding">2</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="combobox-timezone">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">48</property>
<property name="margin_right">48</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property> <property name="fill">False</property>
<property name="padding">2</property> <property name="position">4</property>
<property name="position">5</property>
</packing> </packing>
</child> </child>
</object> </object>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment