00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00031 #include <string.h>
00032 #include <stdlib.h>
00033 #include <ctype.h>
00034 #include <sys/utsname.h>
00035 #include <gtk/gtk.h>
00036
00037 #include <liberdm/display.h>
00038 #include <libergtk/ergtk.h>
00039 #include "gtkSettingItem.h"
00040 #include "setupLog.h"
00041 #include "iLiadDeviceOverview.h"
00042 #include "languages.h"
00043 #include "system.h"
00044
00045
00046 static gtk_dev_overview* g_dev_overview_screen = NULL;
00047
00048
00049 static GtkWidget* gtk_dev_info_new(gtkDevInfo_t* dev);
00050 static GtkWidget* gtk_ack_new(gtkAck_t* ack);
00051 static void gtk_insert_separator(GtkBox *vbox);
00052
00053
00054
00055
00056
00057 GtkWidget *iLiad_device_overview_create(void)
00058 {
00059 GtkWidget* vbox;
00060 GtkWidget* dev;
00061 GtkWidget* ack;
00062
00063 ST_LOGPRINTF("entry");
00064 g_dev_overview_screen = g_new0(gtk_dev_overview, 1);
00065
00066
00067 vbox = gtk_vbox_new(FALSE, DEV_OVERVIEW_ITEM_SPACING);
00068 g_dev_overview_screen->top_level_vbox = vbox;
00069
00070 dev = gtk_dev_info_new(&g_dev_overview_screen->gtk_dev_info);
00071 gtk_box_pack_start(GTK_BOX(vbox), dev, FALSE, FALSE, 0);
00072
00073 ack = gtk_ack_new(&g_dev_overview_screen->gtk_acknowledgement);
00074 gtk_box_pack_start(GTK_BOX(vbox), ack, FALSE, FALSE, 0);
00075
00076
00077 gtk_widget_show(vbox);
00078 return vbox;
00079 }
00080
00081 void gtk_insert_separator(GtkBox *vbox)
00082 {
00083 GtkWidget* hbox;
00084
00085 hbox = gtk_hbox_new(FALSE, 0);
00086 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(hbox), FALSE, FALSE, 0);
00087 gtk_widget_set_size_request(hbox, TITLE_MIN_WIDTH, DEV_OVERVIEW_SEPARATOR_HEIGHT);
00088 }
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108 GtkWidget* gtk_dev_info_new(gtkDevInfo_t* dev)
00109 {
00110 GtkWidget* settingitem;
00111 GtkWidget* background;
00112 GtkWidget* alignment;
00113 GtkWidget* vbox;
00114 GtkWidget* hbox;
00115 GtkWidget* label;
00116
00117 gint i = 0;
00118
00119 ST_LOGPRINTF("entry");
00120
00121 g_return_val_if_fail(NULL != dev, NULL);
00122
00123
00124 settingitem = gtk_settingitem_new("");
00125 gtk_widget_set_size_request(settingitem, -1, -1);
00126 dev->settingitem = settingitem;
00127
00128
00129 background = gtk_event_box_new();
00130 gtk_widget_set_name(background, "device_info_background");
00131 gtk_widget_set_size_request(background, TITLE_MIN_WIDTH, DEVICE_INFO_HEIGHT);
00132 gtk_settingitem_add_details(GTK_SETTINGITEM(settingitem), background);
00133
00134
00135 alignment = gtk_alignment_new(0, 0, 0, 0);
00136 gtk_alignment_set_padding(GTK_ALIGNMENT(alignment),
00137 DEVICE_OVERVIEW_ITEM_PADDING_TOP, DEVICE_OVERVIEW_ITEM_PADDING_BOTTOM,
00138 DEVICE_OVERVIEW_ITEM_PADDING_LEFT, DEVICE_OVERVIEW_ITEM_PADDING_RIGHT);
00139 gtk_container_add(GTK_CONTAINER(background), alignment);
00140
00141 vbox = gtk_vbox_new(FALSE, DEV_OVERVIEW_ITEM_SPACING);
00142 gtk_container_add(GTK_CONTAINER(alignment), vbox);
00143
00144 for (i=0; i<DEV_INFO_ITEM_NUMBER; i++)
00145 {
00146 if (i == 6 || i == 9)
00147 {
00148 gtk_insert_separator(GTK_BOX(vbox));
00149 }
00150
00151 hbox = gtk_hbox_new(FALSE, 0);
00152 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(hbox), FALSE, FALSE, 0);
00153
00154 label = gtk_label_new("");
00155 gtk_widget_set_name(label, "device_overview_info_text");
00156 gtk_widget_set_size_request(label, DEVICE_INFO_LABEL_WIDTH, -1);
00157 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
00158 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
00159 dev->label_item_title[i] = label;
00160
00161 dev->label_item_value[i] = gtk_label_new("");
00162 gtk_widget_set_name(dev->label_item_value[i], "device_overview_info_text");
00163 gtk_box_pack_start(GTK_BOX(hbox), dev->label_item_value[i], FALSE, FALSE, 0);
00164 }
00165
00166 gtk_widget_show_all(background);
00167 gtk_widget_show(settingitem);
00168 return settingitem;
00169 }
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179 GtkWidget* gtk_ack_new(gtkAck_t* ack)
00180 {
00181 GtkWidget* settingitem;
00182 GtkWidget* background;
00183 GtkWidget* alignment;
00184 GtkWidget* vbox;
00185 GtkWidget* label;
00186 gint i = 0;
00187
00188 ST_LOGPRINTF("entry");
00189
00190 g_return_val_if_fail(NULL != ack, NULL);
00191
00192
00193 settingitem = gtk_settingitem_new("");
00194 gtk_widget_set_size_request(settingitem, -1, -1);
00195 ack->settingitem = settingitem;
00196
00197
00198 background = gtk_event_box_new();
00199 gtk_widget_set_name(background, "device_ack_background");
00200 gtk_widget_set_size_request(background, TITLE_MIN_WIDTH, DEVICE_ACK_HEIGHT);
00201 gtk_settingitem_add_details(GTK_SETTINGITEM(settingitem), background);
00202
00203
00204 alignment = gtk_alignment_new(0, 0, 0, 0);
00205 gtk_alignment_set_padding(GTK_ALIGNMENT(alignment),
00206 DEVICE_OVERVIEW_ITEM_PADDING_TOP, DEVICE_OVERVIEW_ITEM_PADDING_BOTTOM,
00207 DEVICE_OVERVIEW_ITEM_PADDING_LEFT, DEVICE_OVERVIEW_ITEM_PADDING_RIGHT);
00208 gtk_container_add(GTK_CONTAINER(background), alignment);
00209
00210 vbox = gtk_vbox_new(FALSE, DEV_OVERVIEW_ITEM_SPACING);
00211 gtk_container_add(GTK_CONTAINER(alignment), vbox);
00212
00213 label = gtk_label_new("");
00214 gtk_widget_set_name(label, "device_overview_info_text");
00215 gtk_label_set_single_line_mode(GTK_LABEL(label), FALSE);
00216 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
00217 gtk_widget_set_size_request(label, ACK_DESCRIPTION_LABEL_WIDTH, -1);
00218 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
00219 ack->label_description = label;
00220
00221 for (i=0; i<DEV_ACK_ITEM_NUMBER; i++)
00222 {
00223 ack->label_ack_item[i] = gtk_label_new("");
00224 gtk_widget_set_name(ack->label_ack_item[i], "device_overview_info_text");
00225 gtk_misc_set_alignment(GTK_MISC(ack->label_ack_item[i]), 0.0, 0.0);
00226 gtk_box_pack_start(GTK_BOX(vbox), ack->label_ack_item[i], FALSE, FALSE, 0);
00227 }
00228
00229 gtk_widget_show_all(background);
00230 gtk_widget_show(settingitem);
00231 return settingitem;
00232 }
00233
00234 void iLiad_device_overview_set_text(void)
00235 {
00236 gtkDevInfo_t* dev;
00237 gtkAck_t* ack;
00238
00239 ST_LOGPRINTF("entry");
00240
00241 if (g_dev_overview_screen)
00242 {
00243 dev = &g_dev_overview_screen->gtk_dev_info;
00244 ack = &g_dev_overview_screen->gtk_acknowledgement;
00245
00246 gtk_settingitem_set_header_text(GTK_SETTINGITEM(dev->settingitem), _("Device Identification"));
00247
00248 gtk_label_set_text(GTK_LABEL(dev->label_item_title[0]), _("Product type:"));
00249 gtk_label_set_text(GTK_LABEL(dev->label_item_title[1]), _("Language set:"));
00250 gtk_label_set_text(GTK_LABEL(dev->label_item_title[2]), _("OEM code:"));
00251 gtk_label_set_text(GTK_LABEL(dev->label_item_title[3]), _("Country code:"));
00252 gtk_label_set_text(GTK_LABEL(dev->label_item_title[4]), _("PCBA revision:"));
00253 gtk_label_set_text(GTK_LABEL(dev->label_item_title[5]), _("EPD ID:"));
00254 gtk_label_set_text(GTK_LABEL(dev->label_item_title[6]), _("Product ID:"));
00255 gtk_label_set_text(GTK_LABEL(dev->label_item_title[7]), _("Wired MAC address:"));
00256 gtk_label_set_text(GTK_LABEL(dev->label_item_title[8]), _("Wireless MAC address:"));
00257 gtk_label_set_text(GTK_LABEL(dev->label_item_title[9]), _("Software version:"));
00258 gtk_label_set_text(GTK_LABEL(dev->label_item_title[10]), _("Software build number:"));
00259 gtk_label_set_text(GTK_LABEL(dev->label_item_title[11]), _("Kernel version:"));
00260
00261 gtk_settingitem_set_header_text(GTK_SETTINGITEM(ack->settingitem), _("Acknowledgements"));
00262
00263 gtk_label_set_text(GTK_LABEL(ack->label_description),
00264 _("iRex Technologies wants to thank the following people for contributing to the iLiad software:"));
00265
00266 char tmp_str[128];
00267 snprintf(tmp_str, 128, _("German translation: %s"), "Henning Angelo Wolter");
00268 gtk_label_set_text(GTK_LABEL(ack->label_ack_item[0]), tmp_str);
00269
00270 snprintf(tmp_str, 128, _("Stylus calibration: %s"), "Jay Kuri, Rob Mills, John Harker");
00271 gtk_label_set_text(GTK_LABEL(ack->label_ack_item[1]), tmp_str);
00272 }
00273 }
00274
00275 void iLiad_device_overview_display_data(void)
00276 {
00277 gtkDevInfo_t* dev = &g_dev_overview_screen->gtk_dev_info;
00278
00279 char tmp[20];
00280 struct utsname uname_buf;
00281
00282 ST_LOGPRINTF("entry");
00283 if (g_dev_overview_screen->top_level_vbox)
00284 {
00285 gtk_label_set_text(GTK_LABEL(dev->label_item_value[0]), get_sysset_fa_model());
00286
00287 sprintf(tmp, "%03d", get_sysset_fa_region());
00288 gtk_label_set_text(GTK_LABEL(dev->label_item_value[1]), tmp);
00289
00290 gtk_label_set_text(GTK_LABEL(dev->label_item_value[2]), get_sysset_fa_oem_code());
00291 gtk_label_set_text(GTK_LABEL(dev->label_item_value[3]), get_sysset_fa_country_code());
00292
00293 sprintf(tmp, "%d", get_sysset_pa_board_revision());
00294 gtk_label_set_text(GTK_LABEL(dev->label_item_value[4]), tmp);
00295 gtk_label_set_text(GTK_LABEL(dev->label_item_value[5]), get_sysset_epd_id());
00296
00297 gtk_label_set_text(GTK_LABEL(dev->label_item_value[6]), get_sysset_product_id());
00298 gtk_label_set_text(GTK_LABEL(dev->label_item_value[7]), get_wired_macAddress());
00299 gtk_label_set_text(GTK_LABEL(dev->label_item_value[8]), get_wireless_macAddress());
00300
00301 FILE *fp = fopen(VERSION_FILE, "r");
00302 if (NULL != fp)
00303 {
00304 char version[40];
00305 fgets(version, sizeof(version)-1, fp);
00306 fclose(fp);
00307 char *new_line = strchr(version, '\n');
00308 if (new_line)
00309 {
00310 *new_line = '\0';
00311 }
00312
00313 gtk_label_set_text(GTK_LABEL(dev->label_item_value[9]), version);
00314 }
00315
00316 fp = fopen(BUILD_FILE, "r");
00317 if (NULL != fp)
00318 {
00319 char build_number[40];
00320 fgets(build_number, sizeof(build_number)-1, fp);
00321 fclose(fp);
00322 char *new_line = strchr(build_number, '\n');
00323 if (new_line)
00324 {
00325 *new_line = '\0';
00326 }
00327
00328 gtk_label_set_text(GTK_LABEL(dev->label_item_value[10]), build_number);
00329 }
00330
00331 uname(&uname_buf);
00332 char *p = NULL;
00333 for (p = uname_buf.version; !isdigit(*p); p++);
00334 int kernel_build_number = atoi(p);
00335
00336 char kernel_version[32];
00337 snprintf(kernel_version, 32, "%s #%d", uname_buf.release, kernel_build_number);
00338 gtk_label_set_text(GTK_LABEL(dev->label_item_value[11]), kernel_version);
00339 }
00340 }
00341