Improved the logs window

This commit is contained in:
Pierre Pronchery 2012-01-03 09:38:43 +00:00
parent b40ceb6b47
commit 7a06b25173
2 changed files with 210 additions and 112 deletions

182
po/fr.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Phone 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-01-03 09:42+0100\n"
"POT-Creation-Date: 2012-01-03 10:35+0100\n"
"PO-Revision-Date: 2010-04-24 02:07+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: DeforaOS development (French) <devel-fr@lists.defora.org>\n"
@ -27,317 +27,329 @@ msgstr ""
" -m\tNom du greffon modem à charger\n"
" -r\tDélai entre deux tentatives d'accès au modem (ms)\n"
#: ../src/phone.c:359
#: ../src/phone.c:366 ../src/phone.c:382
msgid "All"
msgstr "Tous"
#: ../src/phone.c:360
#: ../src/phone.c:366 ../src/phone.c:2048
msgid "To/From"
msgstr "Vers/De"
#: ../src/phone.c:368
msgid "Incoming"
msgstr "Entrant"
#: ../src/phone.c:368
msgid "From"
msgstr "De"
#: ../src/phone.c:370 ../src/phone.c:3227
msgid "Outgoing"
msgstr "Sortant"
#: ../src/phone.c:370
msgid "To"
msgstr "Vers"
#: ../src/phone.c:383
msgid "Inbox"
msgstr "Reçus"
#: ../src/phone.c:361
#: ../src/phone.c:384
msgid "Sent"
msgstr "Envoyés"
#: ../src/phone.c:362
#: ../src/phone.c:385
msgid "Drafts"
msgstr "Brouillons"
#: ../src/phone.c:363
#: ../src/phone.c:386
msgid "Trash"
msgstr "Corbeille"
#: ../src/phone.c:512 ../src/phone.c:2631
#: ../src/phone.c:535 ../src/phone.c:2684
msgid "System preferences"
msgstr "Préférences système"
#: ../src/phone.c:523 ../src/phone.c:2054
#: ../src/phone.c:546 ../src/phone.c:2107
msgid "Plug-ins"
msgstr "Greffons"
#: ../src/phone.c:673
#: ../src/phone.c:696
#, c-format
msgid "Checking %s..."
msgstr "Vérification %s..."
#: ../src/phone.c:736
#: ../src/phone.c:759
msgid "Delete this contact?"
msgstr "Supprimer ce contact?"
#: ../src/phone.c:1134 ../src/phone.c:1300
#: ../src/phone.c:1157 ../src/phone.c:1323
msgid "Delete this message?"
msgstr "Supprimer ce message?"
#: ../src/phone.c:1140 ../src/phone.c:1305
#: ../src/phone.c:1163 ../src/phone.c:1328
msgid "Deleting message..."
msgstr "Suppression du message..."
#: ../src/phone.c:1389
#: ../src/phone.c:1412
msgid "translator-credits"
msgstr "Pierre Pronchery <khorben@defora.org>"
#: ../src/phone.c:1436
#: ../src/phone.c:1459
msgid "Unknown contact"
msgstr "Contact inconnu"
#: ../src/phone.c:1439
#: ../src/phone.c:1462
msgid "Unknown number"
msgstr "Numéro inconnu"
#: ../src/phone.c:1458
#: ../src/phone.c:1481
msgid "In conversation"
msgstr "En conversation"
#: ../src/phone.c:1469
#: ../src/phone.c:1492
msgid "Incoming call"
msgstr "Appel entrant"
#: ../src/phone.c:1479
#: ../src/phone.c:1502
msgid "Outgoing call"
msgstr "Appel sortant"
#: ../src/phone.c:1490
#: ../src/phone.c:1513
msgid "Call finished"
msgstr "Appel terminé"
#: ../src/phone.c:1524
#: ../src/phone.c:1547
msgid "_Answer"
msgstr "_Répondre"
#: ../src/phone.c:1529
#: ../src/phone.c:1552
msgid "_Hangup"
msgstr "Ra_ccrocher"
#: ../src/phone.c:1534
#: ../src/phone.c:1557
msgid "_Reject"
msgstr "Re_jeter"
#: ../src/phone.c:1555
#: ../src/phone.c:1578
msgid "Loudspeaker"
msgstr "Haut-parleur"
#: ../src/phone.c:1563
#: ../src/phone.c:1586
msgid "Mute microphone"
msgstr "Couper le microphone"
#: ../src/phone.c:1571
#: ../src/phone.c:1594
msgid "Show dialer"
msgstr "Afficher le cadran"
#: ../src/phone.c:1612
#: ../src/phone.c:1635
#, c-format
msgid "Enter %s"
msgstr "Entrer %s"
#: ../src/phone.c:1655
#: ../src/phone.c:1678
msgid "Enter"
msgstr "Entrer"
#: ../src/phone.c:1657
#: ../src/phone.c:1680
msgid "Skip"
msgstr "Ignorer"
#: ../src/phone.c:1685
#: ../src/phone.c:1708
msgid "Contacts"
msgstr "Contacts"
#: ../src/phone.c:1691 ../src/phone.c:1805 ../src/phone.c:1848
#: ../src/phone.c:1949 ../src/phone.c:2307
#: ../src/phone.c:1714 ../src/phone.c:1828 ../src/phone.c:1878
#: ../src/phone.c:2002 ../src/phone.c:2360
msgid "Call"
msgstr "Appeler"
#: ../src/phone.c:1697
#: ../src/phone.c:1720
msgid "Write"
msgstr "Écrire"
#: ../src/phone.c:1739 ../src/phone.c:2085 ../src/phone.c:2418
#: ../src/phone.c:1762 ../src/phone.c:2138 ../src/phone.c:2471
msgid "Name"
msgstr "Nom"
#: ../src/phone.c:1785
#: ../src/phone.c:1808
msgid "Dialer"
msgstr "Composer"
#: ../src/phone.c:1807
#: ../src/phone.c:1830
msgid "Hang up"
msgstr "Raccrocher"
#: ../src/phone.c:1842
#: ../src/phone.c:1872
msgid "Phone logs"
msgstr "Journal d'appels"
#: ../src/phone.c:1853
#: ../src/phone.c:1883
msgid "Message"
msgstr "Message"
#: ../src/phone.c:1880
#: ../src/phone.c:1922
msgid "Direction"
msgstr "Direction"
#: ../src/phone.c:1885 ../src/phone.c:1995
msgid "To/From"
msgstr "Vers/De"
#: ../src/phone.c:1889 ../src/phone.c:2003
#: ../src/phone.c:1931 ../src/phone.c:2056
msgid "Date"
msgstr "Date"
#: ../src/phone.c:1943
#: ../src/phone.c:1996
msgid "Messages"
msgstr "Messages"
#: ../src/phone.c:1954
#: ../src/phone.c:2007
msgid "New message"
msgstr "Nouveau message"
#: ../src/phone.c:1960 ../src/phone.c:2313
#: ../src/phone.c:2013 ../src/phone.c:2366
msgid "Reply"
msgstr "Répondre"
#: ../src/phone.c:2073
#: ../src/phone.c:2126
msgid "Enabled"
msgstr "Activé"
#: ../src/phone.c:2301
#: ../src/phone.c:2354
msgid "Read message"
msgstr "Lire le message"
#: ../src/phone.c:2319
#: ../src/phone.c:2372
msgid "Forward"
msgstr "Transmettre"
#: ../src/phone.c:2393
#: ../src/phone.c:2446
msgid "Telephony settings"
msgstr "Paramètres de téléphonie"
#: ../src/phone.c:2470
#: ../src/phone.c:2523
msgid "missed calls"
msgstr "appels manqués"
#: ../src/phone.c:2470
#: ../src/phone.c:2523
msgid "missed call"
msgstr "appel manqué"
#: ../src/phone.c:2479
#: ../src/phone.c:2532
msgid "new messages"
msgstr "nouveaux messages"
#: ../src/phone.c:2480
#: ../src/phone.c:2533
msgid "new message"
msgstr "nouveau message"
#: ../src/phone.c:2498 ../src/phone.c:3455 ../src/phone.c:3459
#: ../src/phone.c:2551 ../src/phone.c:3508 ../src/phone.c:3512
msgid "Information"
msgstr "Information"
#: ../src/phone.c:2508
#: ../src/phone.c:2561
msgid "Status"
msgstr "État"
#: ../src/phone.c:2532
#: ../src/phone.c:2585
msgid "_View"
msgstr "_Vue"
#: ../src/phone.c:2551
#: ../src/phone.c:2604
msgid "_Read"
msgstr "_Lire"
#: ../src/phone.c:2691
#: ../src/phone.c:2744
msgid "Open file..."
msgstr "Ouvrir fichier..."
#: ../src/phone.c:2874
#: ../src/phone.c:2927
msgid "Write message"
msgstr "Écrire un message"
#: ../src/phone.c:2880
#: ../src/phone.c:2933
msgid "Send"
msgstr "Envoyer"
#: ../src/phone.c:2886
#: ../src/phone.c:2939
msgid "Attach"
msgstr "Joindre"
#: ../src/phone.c:3002
#: ../src/phone.c:3055
msgid "Attach file..."
msgstr "Joindre un fichier..."
#: ../src/phone.c:3074
#: ../src/phone.c:3127
#, c-format
msgid "%d message%s, %d/%d characters"
msgstr "%d message%s, %d/%d caractères"
#: ../src/phone.c:3075
#: ../src/phone.c:3128
msgid "s"
msgstr "s"
#: ../src/phone.c:3139
#: ../src/phone.c:3192
msgid "Sending message..."
msgstr "Envoi du message..."
#: ../src/phone.c:3174
msgid "Outgoing"
msgstr "Sortant"
#: ../src/phone.c:3360
#: ../src/phone.c:3413
msgid "Operation in progress..."
msgstr "Opération en cours..."
#: ../src/phone.c:3400 ../src/phone.c:3404
#: ../src/phone.c:3453 ../src/phone.c:3457
msgid "Question"
msgstr "Question"
#: ../src/phone.c:3424 ../src/phone.c:3428
#: ../src/phone.c:3477 ../src/phone.c:3481
msgid "Error"
msgstr "Erreur"
#: ../src/phone.c:3657
#: ../src/phone.c:3743
msgid "Name: "
msgstr "Nom: "
#: ../src/phone.c:3666
#: ../src/phone.c:3752
msgid "Number: "
msgstr "Numéro: "
#: ../src/phone.c:3682
#: ../src/phone.c:3768
msgid "New contact"
msgstr "Nouveau contact"
#: ../src/phone.c:3684
#: ../src/phone.c:3770
msgid "Edit contact: "
msgstr "Modifier contact: "
#: ../src/phone.c:3711
#: ../src/phone.c:3797
msgid "The name cannot be empty"
msgstr "Le nom ne peut être vide"
#: ../src/phone.c:3716
#: ../src/phone.c:3802
msgid "The number cannot be empty"
msgstr "Le numéro ne peut être vide"
#: ../src/phone.c:3850
#: ../src/phone.c:3936
msgid "Message sent"
msgstr "Message envoyé"
#: ../src/phone.c:3880
#: ../src/phone.c:3966
#, c-format
msgid "Wrong %s"
msgstr "Mauvais %s"
#: ../src/phone.c:3883
#: ../src/phone.c:3969
msgid "Authentication failed"
msgstr "Échec lors de l'authentification"
#: ../src/phone.c:3892
#: ../src/phone.c:3978
#, c-format
msgid "%s is valid"
msgstr "%s valide"
#: ../src/phone.c:3955
#: ../src/phone.c:4041
msgid "Raw data (not shown)"
msgstr "Données brutes (non affichées)"
#: ../src/phone.c:3991
#: ../src/phone.c:4077
msgid "Message deleted"
msgstr "Message effacé"

View File

@ -307,6 +307,13 @@ static int _phone_helper_confirm(Phone * phone, char const * message);
static void _phone_info(Phone * phone, GtkWidget * window, char const * message,
GCallback callback);
static gboolean _phone_log_filter_all(GtkTreeModel * model, GtkTreeIter * iter,
gpointer data);
static gboolean _phone_log_filter_incoming(GtkTreeModel * model,
GtkTreeIter * iter, gpointer data);
static gboolean _phone_log_filter_outgoing(GtkTreeModel * model,
GtkTreeIter * iter, gpointer data);
static gboolean _phone_messages_filter_all(GtkTreeModel * model,
GtkTreeIter * iter, gpointer data);
static gboolean _phone_messages_filter_drafts(GtkTreeModel * model,
@ -348,6 +355,22 @@ static gboolean _phone_timeout_track(gpointer data);
/* more constants */
static const struct
{
char const * icon;
char const * name;
char const * direction;
GtkTreeModelFilterVisibleFunc filter;
} _phone_log_filters[3] =
{
{ "stock_select-all", N_("All"), N_("To/From"),
_phone_log_filter_all },
{ GTK_STOCK_GO_DOWN, N_("Incoming"), N_("From"),
_phone_log_filter_incoming },
{ GTK_STOCK_GO_UP, N_("Outgoing"), N_("To"),
_phone_log_filter_outgoing }
};
static const struct
{
char const * icon;
@ -1831,8 +1854,15 @@ static void _show_logs_window(Phone * phone)
GtkWidget * vbox;
GtkWidget * widget;
GtkToolItem * toolitem;
GtkWidget * view;
size_t i;
GtkCellRenderer * renderer;
GtkTreeViewColumn * column;
GtkWidget * hbox;
char const * icon;
char const * name;
GtkTreeModel * filter;
GtkTreeModel * sort;
phone->lo_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(phone->lo_window), 200, 300);
@ -1863,34 +1893,57 @@ static void _show_logs_window(Phone * phone)
on_phone_logs_clear), phone);
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
/* FIXME make it a notebook with different log categories */
/* view */
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(widget),
GTK_SHADOW_ETCHED_IN);
phone->lo_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
phone->lo_store));
gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(phone->lo_view), TRUE);
g_signal_connect_swapped(G_OBJECT(phone->lo_view), "row-activated",
G_CALLBACK(on_phone_logs_activated), phone);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(phone->lo_view), TRUE);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Direction"),
renderer, "text", PHONE_LOGS_COLUMN_CALL_TYPE_DISPLAY,
NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(phone->lo_view), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("To/From"),
renderer, "text", PHONE_LOGS_COLUMN_NUMBER, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(phone->lo_view), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Date"), renderer,
"text", PHONE_LOGS_COLUMN_DATE_DISPLAY, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(phone->lo_view), column);
gtk_container_add(GTK_CONTAINER(widget), phone->lo_view);
gtk_box_pack_start(GTK_BOX(vbox), widget, TRUE, TRUE, 0);
phone->lo_view = gtk_notebook_new();
gtk_notebook_set_scrollable(GTK_NOTEBOOK(phone->lo_view), TRUE);
for(i = 0; i < 3; i++)
{
icon = _phone_log_filters[i].icon;
name = _phone_log_filters[i].name;
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(widget),
GTK_SHADOW_ETCHED_IN);
filter = gtk_tree_model_filter_new(GTK_TREE_MODEL(
phone->lo_store), NULL);
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(
filter),
_phone_log_filters[i].filter, phone, NULL);
sort = gtk_tree_model_sort_new_with_model(filter);
view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
phone->lo_store));
gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(view), TRUE);
g_signal_connect_swapped(G_OBJECT(view), "row-activated",
G_CALLBACK(on_phone_logs_activated), phone);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), TRUE);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_("Direction"), renderer, "text",
PHONE_LOGS_COLUMN_CALL_TYPE_DISPLAY, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(view), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_(_phone_log_filters[i].direction), renderer,
"text", PHONE_LOGS_COLUMN_NUMBER, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(view), column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Date"),
renderer, "text",
PHONE_LOGS_COLUMN_DATE_DISPLAY, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(view), column);
gtk_container_add(GTK_CONTAINER(widget), view);
hbox = gtk_hbox_new(FALSE, 4);
gtk_notebook_append_page(GTK_NOTEBOOK(phone->lo_view), widget,
hbox);
gtk_box_pack_start(GTK_BOX(hbox), gtk_image_new_from_icon_name(
icon, GTK_ICON_SIZE_MENU), FALSE, TRUE,
0);
gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_(name)), FALSE,
TRUE, 0);
gtk_widget_show_all(hbox);
}
gtk_box_pack_start(GTK_BOX(vbox), phone->lo_view, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(phone->lo_window), vbox);
gtk_widget_show_all(vbox);
}
@ -3462,6 +3515,39 @@ static void _phone_info(Phone * phone, GtkWidget * window, char const * message,
}
/* phone_log_filter_all */
static gboolean _phone_log_filter_all(GtkTreeModel * model, GtkTreeIter * iter,
gpointer data)
{
PhoneCallType type;
gtk_tree_model_get(model, iter, PHONE_LOGS_COLUMN_CALL_TYPE, &type, -1);
return TRUE;
}
/* phone_log_filter_incoming */
static gboolean _phone_log_filter_incoming(GtkTreeModel * model,
GtkTreeIter * iter, gpointer data)
{
PhoneCallType type;
gtk_tree_model_get(model, iter, PHONE_LOGS_COLUMN_CALL_TYPE, &type, -1);
return (type == PHONE_CALL_TYPE_INCOMING) ? TRUE : FALSE;
}
/* phone_log_filter_outgoing */
static gboolean _phone_log_filter_outgoing(GtkTreeModel * model,
GtkTreeIter * iter, gpointer data)
{
PhoneCallType type;
gtk_tree_model_get(model, iter, PHONE_LOGS_COLUMN_CALL_TYPE, &type, -1);
return (type == PHONE_CALL_TYPE_OUTGOING) ? TRUE : FALSE;
}
/* phone_message */
static void _phone_message(Phone * phone, PhoneMessage message, ...)
{