diff --git a/po/fr.po b/po/fr.po index dc18b71..0aa3dd3 100644 --- a/po/fr.po +++ b/po/fr.po @@ -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 \n" "Language-Team: DeforaOS development (French) \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 " -#: ../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é" diff --git a/src/phone.c b/src/phone.c index 35c40cf..ebbb78c 100644 --- a/src/phone.c +++ b/src/phone.c @@ -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, ...) {