summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/kaddressbook/frenchtranslation.txt741
-rw-r--r--bin/kdepim/kopiemail/frenchtranslation.txt238
-rw-r--r--bin/kdepim/korganizer/frenchtranslation.txt41
-rw-r--r--kmicromail/composemail.cpp4
-rw-r--r--kmicromail/libmailwrapper/genericwrapper.cpp2
-rw-r--r--kmicromail/mainwindow.cpp1
6 files changed, 1017 insertions, 10 deletions
diff --git a/bin/kdepim/kaddressbook/frenchtranslation.txt b/bin/kdepim/kaddressbook/frenchtranslation.txt
new file mode 100644
index 0000000..279d13b
--- a/dev/null
+++ b/bin/kdepim/kaddressbook/frenchtranslation.txt
@@ -0,0 +1,741 @@
1{ "file","fichier" },
2{ "Choose one file","Choisir un fichier" },
3{ "dir","Liste" },
4{ "Choose a directory with may files","Choisir un dossier avec fichiers" },
5{ "ldap","ldap" },
6{ "No description available","Description non disponible" },
7{ "Library files for "%1" not found in paths","Librairies "%1" non trouvées dans le chemin" },
8{ "qtopia","qtopia" },
9{ "Qtopia PIM Addressbook.","Qtopia PIM Addressbook." },
10{ "vCard","vCard" },
11{ "vCard Format","vCard Format" },
12{ "microkabcformat_binary","microkabcformat_binary" },
13{ "Binary","Exécutable" },
14{ "No description available.","Description non disponible." },
15{ "Department","Service" },
16{ "Profession","Profession" },
17{ "Manager's name:","Supérieur:" },
18{ "Assistant's name:","Assistant:" },
19{ "Nick name:","Surnom:" },
20{ "Spouse's name:","Conjoint:" },
21{ "Children's names:","Nom des enfants:" },
22{ "Office","Bureau" },
23{ "IM Address","IM Addresse" },
24{ "Anniversary","Fête" },
25{ "Gender","Genre" },
26{ "Children's names:","Noms des enfants:" },
27{ "FreeBusyUrl","FreeBusyUrl" },
28{ "ExternalID","ExternalID" },
29{ "Resource loaded: '%1'","Ressource chargée: '%1'" },
30{ "Select View","Vue sélectionnée" },
31{ "Modify View...","Vue modifiée..." },
32{ "Add View...","Ajouter vue..." },
33{ "Delete View","Détruire vue" },
34{ "Refresh View","Rafraichir vue" },
35{ "Edit &Filters...","Editer &Filtres..." },
36{ "Select Filter","Selectionner Filtre" },
37{ "Style:","Style:" },
38{ "HTML table style.","Style table HTML." },
39{ "Default Table View","Vue table par défaut" },
40{ "Show Extension Bar","Montrer Barre d'extension" },
41{ "None","Rien" },
42{ "Name...","Nom..." },
43{ "Role:","Poste:" },
44{ "Organization:","Organisation:" },
45{ "Formatted name:","Nom mis en forme:" },
46{ "Edit Phone Numbers...","Editer Numéros de Tel..." },
47{ "Categories","Catégories" },
48{ "Public","Publique" },
49{ "Private","Privée" },
50{ "Confidential","Confidentielle" },
51{ "&General","&Général" },
52{ "&Edit Addresses...","&Editer Adresses..." },
53{ "Edit Address Book Filters","Editer les filtres du carnet d'adresses" },
54{ "Edit Email Addresses...","Editer Adresses Email..." },
55{ "Email:","Email:" },
56{ "URL:","URL:" },
57{ "&IM address:","&IM adresse:" },
58{ "&Address","&Adresse" },
59{ "Department:","Service:" },
60{ "Office:","Bureau:" },
61{ "Profession","Profession" },
62{ "Assistant's Name","Assistant" },
63{ "Manager's Name","Supérieur " },
64{ "Spouse's Name","Conjoint" },
65{ "Office","Bureau" },
66{ "IM Address","IM Addresse" },
67{ "Anniversary","Fête" },
68{ "Gender","Genre" },
69{ "Children","Enfant" },
70{ "Birthday:","Naissance:" },
71{ " Local Time"," Temps local" },
72{ "Mon","Lun" },
73{ "Tue","Mar" },
74{ "Wed","Mer" },
75{ "Thu","Jeu" },
76{ "Fri","Ven" },
77{ "Sat","Sam" },
78{ "Sun","Dim" },
79{ "January","Janvier" },
80{ "February","Février" },
81{ "March","Mars" },
82{ "April","Avril" },
83{ "May","Mai" },
84{ "June","Juin" },
85{ "July","Juillet" },
86{ "August","Août" },
87{ "September","Septembre" },
88{ "October","Octobre" },
89{ "November","Novembre" },
90{ "December","Decembre" },
91{ "tomorrow","demain" },
92{ "today","aujourd'hui" },
93{ "yesterday","hier" },
94{ "Monday","Lundi" },
95{ "Tuesday","Mardi" },
96{ "Wednesday","Mercredi" },
97{ "Thursday","Jeudi" },
98{ "Friday","Vendredi" },
99{ "Saturday","Samedi" },
100{ "Sunday","Dimanche" },
101{ "Anniversary:","Fête:" },
102{ "Gender:","Genre:" },
103{ "ALIEN (gender undefined)","ALIEN (genre non-défini)" },
104{ "female","féminin" },
105{ "male","masculin" },
106{ "&Details","&Détails" },
107{ "Note:","Note:" },
108{ "&Notes","&Notes" },
109{ "Use geo data","Données géographiques" },
110{ "Latitude:","Latitude:" },
111{ "Longitude:","Longitude:" },
112{ "Edit Geo Data...","Editer Données géo..." },
113{ "Keys:","Touches:" },
114{ "Add","Ajouter" },
115{ "A&dd","&Ajouter" },
116{ "&Modify","&Modifier" },
117{ "Remove","Enlever" },
118{ "E&xport","Export (&X)" },
119{ "&Misc","&Divers" },
120{ "Photo","Photo" },
121{ "Store as URL","Enregistrer comme URL" },
122{ "Logo","Logo" },
123{ "&Images","&Images" },
124{ "Home","Maison" },
125{ "Work","Bureau" },
126{ "Mobile","Mobile" },
127{ "Fax","Fax" },
128{ "Contact Editor","Editeur de Contact" },
129{ "&Mail...","&Mail..." },
130{ "&Print...","Imprimer..." },
131{ "&Save","&Sauver" },
132{ "&New Contact...","Nouveau Contact.(&N)." },
133{ "Mail &vCard...","Mail vCard.(&V)." },
134{ "Selected to phone","Sélection vers GSM" },
135{ "Beam selected v&Card(s)","vCard(s) séléctionné(s) par IR (&C)" },
136{ "&Beam personal vCard","vCard personnel par IR (&B) " },
137{ "&Edit Contact...","Edition Contact.(&E)." },
138{ "&Exit","Exit (&E)" },
139{ "&Copy","Copier (&C)" },
140{ "Cu&t","Couper (&T)" },
141{ "&Paste","Coller (&P)" },
142{ "Select &All","Tout sélectionner (&A)" },
143{ "&Undo","Défaire (&U)" },
144{ "Undo Entry Edit","Défaire" },
145{ "Re&do","Refaire (&D)" },
146{ "Redo","Refaire" },
147{ "&Delete Contact","Detruire Contact (&D)" },
148{ "Configure &Resources...","Configurer Ressources.(&R)." },
149{ "&Configure %1...","&Configurer %1..." },
150{ "Configure S&hortcuts...","Configurer raccourci&s..." },
151{ "Show Jump Bar","Voir barre" },
152{ "Show Details","Voir détails" },
153{ "Beam receive enabled","Réception IR activée" },
154{ "Set Who Am I",""Qui suis-je"" },
155{ "Set Categories","Catégories" },
156{ "Remove "voice"...","Supprimer "Bis"..." },
157{ "Import from Outlook...","Import depuis Outlook..." },
158{ "Licence","Licence" },
159{ "Faq","Faq" },
160{ "What's New?","What's New?" },
161{ "Sync HowTo","Sync HowTo" },
162{ "&About KAddressBook","&About KAddressBook" },
163{ "Select Incremental Search Field","Recherche incrémentale" },
164{ "Synchronize","Synchroniser" },
165{ "Configure...","Configurer..." },
166{ "Enable Pi-Sync","Activer Pi-Sync" },
167{ "Multiple sync","Multiple sync" },
168{ "Import CSV List...","Import liste CSV..." },
169{ "Export CSV List...","Export liste CSV.." },
170{ "Import KDE 2 Addressbook...","Import KDE 2 Addressbook..." },
171{ "Import vCard...","Import vCard..." },
172{ "Export vCard 3.0...","Export vCard 3.0..." },
173{ "Import Qtopia...","Import Qtopia..." },
174{ "Export Qtopia...","Export Qtopia..." },
175{ "Edit Contact","Editer Contact" },
176{ "Ok","Ok" },
177{ "Apply","Appliquer" },
178{ "Cancel","Annuler" },
179{ "KAddressbook/Pi","KAddressbook/Pi" },
180{ "No Filter","Sans Filtre" },
181{ "Given Name","Prénom" },
182{ "Family Name","Nom de Famille" },
183{ "Email Address","Adresse mail" },
184{ "All Fields","Complète" },
185{ "Question","Question" },
186{ "After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as "other".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?","Après l'importation\nvous pouvez avoir un ou plusieurs \ncatégories de numéros. (Ex. Bureau+Bis)\nCes numéros sont affichés comme "autres".\nValider "Oui" pour supprimer les "Bis"\ndes numéros avec plus d'une catégorie.\n\nSupprimer "Bis" ?" },
187{ "No","Non" },
188{ "Yes","Oui" },
189{ "Synchronization Preferences","Préférences de synchro." },
190{ "Local device name:","Nom du périphérique:" },
191{ "New profile","Nouveau profil" },
192{ "Clone profile","Copie de Profil" },
193{ "Delete profile","Supprimer profil" },
194{ "Profile:","Profil:" },
195{ "Include in multiple ","Inclus dans multiple " },
196{ "calendar ","calendrier " },
197{ "addressbook ","agenda " },
198{ "pwmanager","pwmanager" },
199{ " sync"," sync" },
200{ "Ask for preferences before sync","Choix des préférences avant sync" },
201{ "Sync preferences","Préférences de synchro." },
202{ "Take local entry on conflict","Priorité aux entrées locales" },
203{ "Take remote entry on conflict","Priorité aux entrées distantes" },
204{ "Take newest entry on conflict","Priorité aux entrées nouvelles" },
205{ "Ask for every entry on conflict","Demander pour chaque nouvelle entrée" },
206{ "Force: Take local entry always","Force: toujours entrées locales" },
207{ "Force: Take remote entry always","Force: toujours entrées distantes" },
208{ "Show summary after sync","Résumé après synchro." },
209{ "Write back synced data","Ré-écriture données synchronisées" },
210{ "-- Write back (on remote) existing entries only","-- Ecrire en retour (sur source distante) uniquement les entrées existantes" },
211{ "-- Write back (calendar) entries in future only","-- Ecrire en retour, uniquement des entrées futures" },
212{ "---- Max. weeks in future: ","---- Max. de semaines dans le futur: " },
213{ "Profile kind","Type de profil" },
214{ "Local file","Fichier local" },
215{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direct Kx/Pi vers Kx/Pi sync )" },
216{ "Remote file (w down/upload command)","Fichier distant (w down/upload commande)" },
217{ "Mobile device (cell phone)","Mobile (GSM)" },
218{ "I/O device: ","I/O device: " },
219{ "Help...","Aide..." },
220{ "Connection: ","Connection: " },
221{ "Model(opt.): ","Model(opt.): " },
222{ "Local file Cal:","Fichier local Cal:" },
223{ "Local file ABook:","Fichier local ABook:" },
224{ "Local file PWMgr:","Fichier local PWMgr:" },
225{ "Choose...","Choisir..." },
226{ "Addressbook file (*.vcf) is used by KA/Pi","Fichier agenda (*.vcf) est utilisé par KA/Pi" },
227{ "Calendar:","Calendrier:" },
228{ "AddressBook:","Agenda:" },
229{ "PWManager:","PWManager:" },
230{ "Pre sync (download) command:","Pre-sync (download) commande:" },
231{ "Local temp file:","Fichier temporaire:" },
232{ "Post sync (upload) command:","Post-sync (upload) commande:" },
233{ "Addressbook file is used by KA/Pi","Fichier agenda est utilisé par KA/Pi" },
234{ "Fill in default values for:","Compléter les valeurs par défaut:" },
235{ "ssh/scp","ssh/scp" },
236{ "ftp","ftp" },
237#################
238{ "Hint: Use $PWD$ for placeholder of password!","INFO: utiliser $PWD$ à la place du mdp!" },
239{ "Password for remote access: (could be the same for each)","Password for remote access: (could be the same for each)" },
240{ "Remote IP address: (could be the same for each)","Remote IP address: (could be the same for each)" },
241{ "Remote port number: (should be different for each)","Remote port number: (should be different for each)" },
242{ "command for downloading remote file to local device","command for downloading remote file to local device" },
243{ "command for uploading local temp file to remote device","command for uploading local temp file to remote device" },
244{ "Insert device where\nphone is connected. E.g.:\n","Insert device where\nphone is connected. E.g.:\n" },
245{ "KDE-Pim sync config","KDE-Pim sync config" },
246{ "Insert kind of connection,e.g.:\n","Insert kind of connection,e.g.:\n" },
247{ "Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n","Recommended: Leave empty!\n(Such that model can\nbe auto detected)\nOr insert name of model:\n" },
248#################
249{ "KO/Pi config error","KO/Pi erreur de configuration" },
250{ "Local device name undefined!\nPlease define device name!","Local device name undefined!\nPlease define device name!" },
251{ "Edit Address Book Filters","Editer les filtres du carnet d'adresses" },
252{ "&Add...","&Ajouter..." },
253{ "&Edit...","&Editer..." },
254{ "&Remove","Supp&rimer" },
255{ "Modify View: ","Vue modifiée: " },
256{ "Fields","Champs" },
257{ "Select Fields to Display","Sélection champs à afficher" },
258{ "All","Tous" },
259{ "Frequent","Fréquent" },
260{ "Address","Adresse" },
261{ "Email","Email" },
262{ "Personal","Personnel" },
263{ "Organization","Organisation" },
264{ "Custom","Libre" },
265{ "&Selected\nfields:","Champ&s\nsélectionnés:" },
266{ "Formatted Name","Nom mis en forme" },
267{ "Additional Names","Alias" },
268{ "Honorific Prefixes","Prefixes honoraires" },
269{ "Honorific Suffixes","Suffixes honoraires" },
270{ "Nick Name","Surnom" },
271{ "Birthday","Naissance" },
272{ "Home Address Street","Rue adresse personnelle" },
273{ "Home Address Locality","Localité adresse personnelle" },
274{ "Home Address Region","Région adresse personnelle" },
275{ "Home Address Postal Code","Code postal adresse personnelle" },
276{ "Home Address Country","Pays adresse personnelle" },
277{ "Home Address Label","Nom adresse personnelle" },
278{ "Business Address Street","Rue adresse bureau" },
279{ "Business Address Locality","Localité adresse bureau" },
280{ "Business Address Region","Région adresse bureau" },
281{ "Business Address Postal Code","Code postal adresse bureau" },
282{ "Business Address Country","Pays adresse bureau" },
283{ "Business Address Label","Nom adresse bureau" },
284{ "Home Phone","Tel. maison" },
285{ "Business Phone","Tel. bureau" },
286{ "Mobile Phone","Mobile" },
287{ "Home Fax","Fax maison" },
288{ "Business Fax","Fax bureau" },
289{ "Car Phone","Tel. voiture" },
290{ "ISDN","ISDN" },
291{ "Pager","Pager" },
292{ "Mail Client","Client Mail" },
293{ "Title","Titre" },
294{ "Role","Rôle" },
295{ "Note","Note" },
296{ "URL","URL" },
297{ "Resource","Ressource" },
298{ "SIP","SIP" },
299{ "Default Filter","Filtre par défaut" },
300{ "The default filter will be activated whenever this view is displayed. This feature allows you to configure views that only interact with certain types of information based on the filter. Once the view is activated, the filter can be changed at anytime.","Le filtre affiché par défaut est activé quand cette vue est affichée. Cette fonctionnalité vous permet de configurer des vues en intéraction avec certaines informations de basées sur le filtre. Une fois la vue activée, le filtre peut être changé à loisir." },
301{ "No default filter","Pas de filtre par défaut" },
302{ "Use last active filter","Utilisation dernier filtre" },
303{ "Use filter:","Activer Filtre:" },
304{ "Look & Feel","Look & Feel" },
305{ "Row Separator","Séparation colonne" },
306{ "Alternating backgrounds","Lignes alternées" },
307{ "Single line","Ligne simple" },
308{ "Enable background image:","Activer image de fond:" },
309{ "Enable contact tooltips","Activer infos. contact" },
310{ "&Enable custom Colors","Activ&er couleurs perso." },
311{ "&Colors","&Couleurs" },
312{ "If custom colors are enabled, you may choose the colors for the view below. Otherwise colors from your current KDE color scheme are used.","If custom colors are enabled, you may choose the colors for the view below. Otherwise colors from your current KDE color scheme are used." },
313{ "Double click or press RETURN on a item to select a color for the related strings in the view.","Double click or press RETURN on a item to select a color for the related strings in the view." },
314{ "&Enable custom fonts","Activ&er polices perso." },
315{ "&Text font:","Police du &texte:" },
316{ "&Header font:","Police de Titre &H:" },
317{ "If custom fonts are enabled, you may choose which fonts to use for this view below. Otherwise the default KDE font will be used, in bold style for the header and normal style for the data.","If custom fonts are enabled, you may choose which fonts to use for this view below. Otherwise the default KDE font will be used, in bold style for the header and normal style for the data." },
318{ "&Fonts","Polices" },
319{ "Background Color","Couleur de fond" },
320{ "Text Color","Couleur du texte" },
321{ "Header Background Color","Couleur du fond de titre" },
322{ "Header Text Color","Couleur du titre" },
323{ "Highlight Color","Couleur surlignage" },
324{ "Highlighted Text Color","Couleur texte surligné" },
325{ "Alternating Background Color","Couleur du fond alterné" },
326{ "Postal","Postale" },
327{ "Dr.","Dr." },
328{ "Miss","Mlle" },
329{ "Mr.","M." },
330{ "Mrs.","Mme." },
331{ "Ms.","Mme." },
332{ "Prof.","Prof." },
333{ "I","I" },
334{ "II","II" },
335{ "III","III" },
336{ "Jr.","Jr." },
337{ "Sr.","Sr." },
338{ "Name:","Nom:" },
339{ "Documents","Documents" },
340{ "Files","Fichiers" },
341{ "File","Fichier" },
342{ "Edit","Editer" },
343{ "View","Vues" },
344{ "Settings","Configurer" },
345{ "All Files","Tout Fichier" },
346{ "Name","Nom" },
347{ "Size","Taille" },
348{ "Date","Date" },
349{ "Mime Type","Type Mime" },
350{ "Geo Data Input","Données Géo." },
351{ "Sexagesimal","Sexagesimal" },
352{ "North","Nord" },
353{ "South","Sud" },
354{ "East","Est" },
355{ "West","Ouest" },
356{ "Undefined","Indéfini" },
357{ "Edit Address","Modifier Adresse" },
358{ "Street:","Rue:" },
359{ "Post office box:","Boîte postale:" },
360{ "Locality:","Localité:" },
361{ "Region:","Region:" },
362{ "Postal code:","Code postal:" },
363{ "Country:","Pays:" },
364{ "Afghanistan","Afghanistan" },
365{ "Albania","Albanie" },
366{ "Algeria","Algerie" },
367{ "American Samoa","American Samoa" },
368{ "Andorra","Andorre" },
369{ "Angola","Angola" },
370{ "Anguilla","Anguilla" },
371{ "Antarctica","Antarctica" },
372{ "Antigua and Barbuda","Antigua and Barbuda" },
373{ "Argentina","Argentina" },
374{ "Armenia","Armenia" },
375{ "Aruba","Aruba" },
376{ "Ashmore and Cartier Islands","Ashmore and Cartier Islands" },
377{ "Australia","Australia" },
378{ "Austria","Austria" },
379{ "Azerbaijan","Azerbaijan" },
380{ "Bahamas","Bahamas" },
381{ "Bahrain","Bahrain" },
382{ "Bangladesh","Bangladesh" },
383{ "Barbados","Barbados" },
384{ "Belarus","Belarus" },
385{ "Belgium","Belgium" },
386{ "Belize","Belize" },
387{ "Benin","Benin" },
388{ "Bermuda","Bermuda" },
389{ "Bhutan","Bhutan" },
390{ "Bolivia","Bolivia" },
391{ "Bosnia and Herzegovina","Bosnia and Herzegovina" },
392{ "Botswana","Botswana" },
393{ "Brazil","Brazil" },
394{ "Brunei","Brunei" },
395{ "Bulgaria","Bulgaria" },
396{ "Burkina Faso","Burkina Faso" },
397{ "Burundi","Burundi" },
398{ "Cambodia","Cambodia" },
399{ "Cameroon","Cameroon" },
400{ "Canada","Canada" },
401{ "Cape Verde","Cape Verde" },
402{ "Cayman Islands","Cayman Islands" },
403{ "Central African Republic","Central African Republic" },
404{ "Chad","Chad" },
405{ "Chile","Chile" },
406{ "China","China" },
407{ "Colombia","Colombia" },
408{ "Comoros","Comoros" },
409{ "Congo","Congo" },
410{ "Congo, Dem. Rep.","Congo, Dem. Rep." },
411{ "Costa Rica","Costa Rica" },
412{ "Croatia","Croatia" },
413{ "Cuba","Cuba" },
414{ "Cyprus","Cyprus" },
415{ "Czech Republic","Czech Republic" },
416{ "Denmark","Denmark" },
417{ "Djibouti","Djibouti" },
418{ "Dominica","Dominica" },
419{ "Dominican Republic","Dominican Republic" },
420{ "Ecuador","Ecuador" },
421{ "Egypt","Egypt" },
422{ "El Salvador","El Salvador" },
423{ "Equatorial Guinea","Equatorial Guinea" },
424{ "Eritrea","Eritrea" },
425{ "Estonia","Estonia" },
426{ "England","England" },
427{ "Ethiopia","Ethiopia" },
428{ "European Union","European Union" },
429{ "Faroe Islands","Faroe Islands" },
430{ "Fiji","Fiji" },
431{ "Finland","Finland" },
432{ "France","France" },
433{ "French Polynesia","French Polynesia" },
434{ "Gabon","Gabon" },
435{ "Gambia","Gambia" },
436{ "Georgia","Georgia" },
437{ "Germany","Germany" },
438{ "Ghana","Ghana" },
439{ "Greece","Greece" },
440{ "Greenland","Greenland" },
441{ "Grenada","Grenada" },
442{ "Guam","Guam" },
443{ "Guatemala","Guatemala" },
444{ "Guinea","Guinea" },
445{ "Guinea-Bissau","Guinea-Bissau" },
446{ "Guyana","Guyana" },
447{ "Haiti","Haiti" },
448{ "Honduras","Honduras" },
449{ "Hong Kong","Hong Kong" },
450{ "Hungary","Hungary" },
451{ "Iceland","Iceland" },
452{ "India","India" },
453{ "Indonesia","Indonesia" },
454{ "Iran","Iran" },
455{ "Iraq","Iraq" },
456{ "Ireland","Ireland" },
457{ "Israel","Israel" },
458{ "Italy","Italy" },
459{ "Ivory Coast","Ivory Coast" },
460{ "Jamaica","Jamaica" },
461{ "Japan","Japan" },
462{ "Jordan","Jordan" },
463{ "Kazakhstan","Kazakhstan" },
464{ "Kenya","Kenya" },
465{ "Kiribati","Kiribati" },
466{ "Korea, North","Korea, North" },
467{ "Korea, South","Korea, South" },
468{ "Kuwait","Kuwait" },
469{ "Kyrgyzstan","Kyrgyzstan" },
470{ "Laos","Laos" },
471{ "Latvia","Latvia" },
472{ "Lebanon","Lebanon" },
473{ "Lesotho","Lesotho" },
474{ "Liberia","Liberia" },
475{ "Libya","Libya" },
476{ "Liechtenstein","Liechtenstein" },
477{ "Lithuania","Lithuania" },
478{ "Luxembourg","Luxembourg" },
479{ "Macau","Macau" },
480{ "Madagascar","Madagascar" },
481{ "Malawi","Malawi" },
482{ "Malaysia","Malaysia" },
483{ "Maldives","Maldives" },
484{ "Mali","Mali" },
485{ "Malta","Malta" },
486{ "Marshall Islands","Marshall Islands" },
487{ "Martinique","Martinique" },
488{ "Mauritania","Mauritania" },
489{ "Mauritius","Mauritius" },
490{ "Mexico","Mexico" },
491{ "Micronesia, Federated States Of","Micronesia, Federated States Of" },
492{ "Moldova","Moldova" },
493{ "Monaco","Monaco" },
494{ "Mongolia","Mongolia" },
495{ "Montserrat","Montserrat" },
496{ "Morocco","Morocco" },
497{ "Mozambique","Mozambique" },
498{ "Myanmar","Myanmar" },
499{ "Namibia","Namibia" },
500{ "Nauru","Nauru" },
501{ "Nepal","Nepal" },
502{ "Netherlands","Netherlands" },
503{ "Netherlands Antilles","Netherlands Antilles" },
504{ "New Caledonia","New Caledonia" },
505{ "New Zealand","New Zealand" },
506{ "Nicaragua","Nicaragua" },
507{ "Niger","Niger" },
508{ "Nigeria","Nigeria" },
509{ "Niue","Niue" },
510{ "North Korea","North Korea" },
511{ "Northern Ireland","Northern Ireland" },
512{ "Northern Mariana Islands","Northern Mariana Islands" },
513{ "Norway","Norway" },
514{ "Oman","Oman" },
515{ "Pakistan","Pakistan" },
516{ "Palau","Palau" },
517{ "Palestinian","Palestinian" },
518{ "Panama","Panama" },
519{ "Papua New Guinea","Papua New Guinea" },
520{ "Paraguay","Paraguay" },
521{ "Peru","Peru" },
522{ "Philippines","Philippines" },
523{ "Poland","Poland" },
524{ "Portugal","Portugal" },
525{ "Puerto Rico","Puerto Rico" },
526{ "Qatar","Qatar" },
527{ "Romania","Romania" },
528{ "Russia","Russia" },
529{ "Rwanda","Rwanda" },
530{ "St. Kitts and Nevis","St. Kitts and Nevis" },
531{ "St. Lucia","St. Lucia" },
532{ "St. Vincent and the Grenadines","St. Vincent and the Grenadines" },
533{ "San Marino","San Marino" },
534{ "Sao Tome and Principe","Sao Tome and Principe" },
535{ "Saudi Arabia","Saudi Arabia" },
536{ "Senegal","Senegal" },
537{ "Serbia & Montenegro","Serbia & Montenegro" },
538{ "Seychelles","Seychelles" },
539{ "Sierra Leone","Sierra Leone" },
540{ "Singapore","Singapore" },
541{ "Slovakia","Slovakia" },
542{ "Slovenia","Slovenia" },
543{ "Solomon Islands","Solomon Islands" },
544{ "Somalia","Somalia" },
545{ "South Africa","South Africa" },
546{ "South Korea","South Korea" },
547{ "Spain","Spain" },
548{ "Sri Lanka","Sri Lanka" },
549{ "Sudan","Sudan" },
550{ "Suriname","Suriname" },
551{ "Swaziland","Swaziland" },
552{ "Sweden","Sweden" },
553{ "Switzerland","Switzerland" },
554{ "Syria","Syria" },
555{ "Taiwan","Taiwan" },
556{ "Tajikistan","Tajikistan" },
557{ "Tanzania","Tanzania" },
558{ "Thailand","Thailand" },
559{ "Tibet","Tibet" },
560{ "Togo","Togo" },
561{ "Tonga","Tonga" },
562{ "Trinidad and Tobago","Trinidad and Tobago" },
563{ "Tunisia","Tunisia" },
564{ "Turkey","Turkey" },
565{ "Turkmenistan","Turkmenistan" },
566{ "Turks and Caicos Islands","Turks and Caicos Islands" },
567{ "Tuvalu","Tuvalu" },
568{ "Uganda ","Uganda " },
569{ "Ukraine","Ukraine" },
570{ "United Arab Emirates","United Arab Emirates" },
571{ "United Kingdom","United Kingdom" },
572{ "United States","United States" },
573{ "Uruguay","Uruguay" },
574{ "Uzbekistan","Uzbekistan" },
575{ "Vanuatu","Vanuatu" },
576{ "Vatican City","Vatican City" },
577{ "Venezuela","Venezuela" },
578{ "Vietnam","Vietnam" },
579{ "Western Samoa","Western Samoa" },
580{ "Yemen","Yemen" },
581{ "Yugoslavia","Yugoslavia" },
582{ "Zaire","Zaire" },
583{ "Zambia","Zambia" },
584{ "Zimbabwe","Zimbabwe" },
585{ "This is the preferred address","Adresse préférée" },
586{ "New...","Nouveau..." },
587{ "Change Type","Changer type" },
588{ "Edit Address Type","Editer type d'adresse" },
589{ "Address Types","Types d'adresse" },
590{ "Domestic","Personnelle" },
591{ "International","Internationale" },
592{ "Parcel","Livraison" },
593{ "Edit Contact Name","Editer nom du contact" },
594{ "Honorific prefixes:","Préfixe honoraire:" },
595{ "Given name:","Prénom:" },
596{ "Additional names:","Alias:" },
597{ "Family names:","Noms de famille:" },
598{ "Honorific suffixes:","Suffixes honoraires:" },
599{ "Parse name automatically","Mise en forme automatique" },
600{ "Edit Phone Numbers","Editer Numéros de Tel." },
601{ "Number","Numéro" },
602{ "Type","Type" },
603{ "Edit Phone Number","Editer Numéro de Tel." },
604{ "Number:","Numéro:" },
605{ "This is the preferred phone number","Numéro de Tel. préféré" },
606{ "Types","Types" },
607{ "Messenger","Messenger" },
608{ "Other","Autre" },
609{ "Video","Video" },
610{ "Mailbox","Boîte mail" },
611{ "Modem","Modem" },
612{ "Car","Auto" },
613{ "PCS","PCS" },
614{ "Category","Catégorie" },
615{ "Select Categories","Catégories sélectionnées" },
616{ " &Deselect All "," &Déselectionnées toutes " },
617{ " &Edit Categories "," &Editer Catégories " },
618{ " &Manage new categories... "," Gestion nlles. catégories... " },
619{ "&OK","&OK" },
620{ "&Cancel","&Annuler" },
621{ "Configure","Configurer" },
622{ "Default","Défaut" },
623{ "Addressbook","Agenda" },
624{ "Details view font","Police par défaut" },
625{ "phone:123","Tel.:123" },
626{ "Search only after <return> key pressed","Recherche seulement après avoir validé par <enter>" },
627{ "Honor KDE single click","Honorer le simple click de KDE" },
628{ "Automatic name parsing for new addressees","Analyse automatique des noms pour les nouvelles adresses" },
629{ "Display List and Details at once (restart)","Display List and Details at once (restart)" },
630{ "Ask for quit when closing Ka/Pi","Confirmation avant de quitter Ka/Pi" },
631{ "General","General" },
632{ "Extensions (restart)","Extensions (restart)" },
633{ "Description","Description" },
634{ "Extensions","Extensions" },
635{ "Prefixes","Prefixes" },
636{ "Inclusions","Inclusions" },
637{ "Suffixes","Suffixes" },
638{ "Default formatted name:","Mise en forme par défaut:" },
639{ "Empty","Vide" },
640{ "Simple Name","Simple Name" },
641{ "Full Name","Full Name" },
642{ "Reverse Name","Reverse Name" },
643{ "Contact","Contact" },
644{ "Global","Global" },
645{ "Phone","Phone" },
646{ "SMS","SMS" },
647{ "Language:(needs restart)","Langage:(redémarrage)" },
648{ "English","Anglais" },
649{ "German","Allemand" },
650{ "French","Français" },
651{ "Italian","Italien" },
652{ "User defined (usertranslation.txt)","Défini par l'utilisateur (usertranslation.txt)" },
653{ "Time Format(nr):","Format Temps(nr):" },
654{ "24:00","24:00" },
655{ "12:00am","12:00am" },
656{ "Week starts on Sunday","Semaine démarre le Dimanche" },
657{ "Locale","Locale" },
658{ "Date Format:","Date Format:" },
659{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
660{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
661{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
662{ "User defined","Défini par l'utilisateur" },
663{ "User long date:","Date longue:" },
664{ "User short date:","Date courte:" },
665{ "Monday 19 April 2004: %A %d %B %Y","Lundi 19 avril 2004: %A %d %B %Y" },
666{ "Mon 19.04.04: %a %d.%m.%y","Lun 19.04.04: %a %d.%m.%y" },
667{ "Mon, 19.Apr.04: %a, %d.%b.%y","Lun, 19.Avr.04: %a, %d.%b.%y" },
668{ "Date Format","Format Date" },
669{ "Timezone:","Fuseau horaire :" },
670{ "Add 30 min to selected Timezone","Ajout de 30 min au fuseau sélectionné" },
671{ "Timezone has daylight saving","La zone a une heure d'été" },
672{ "Actual start and end is the\nsunday before this date.","Le début et la fin de cette\npériode est le dimanche précédent la date." },
673{ "The year in the date is ignored.","L'année dans cette date est ignorée." },
674{ "Daylight start:","Heure d'été - départ :" },
675{ "Daylight end:","Heure d'été - fin :" },
676{ "Time Zone","Fuseau horaire" },
677{ "Mon","Lun" },
678{ "Time Zone","Fuseau horaire" },
679{ "Used Mail Client","Client mail utilisé" },
680{ "Channel:","Canal:" },
681{ "Message:","Message:" },
682{ "Parameters:","Paramètres:" },
683{ "HINT: Delimiter=; Name=%1,Email=%2","INFO: Delimiteur=; Nom=%1,Email=%2" },
684{ "extra Message:","Message supp.:" },
685{ "extra Parameters:","Paramètres supp.:" },
686{ "HINT: Emails=%1,Attachments=%2","INFO: Emails=%1,Pièce jointe=%2" },
687{ "External Apps.","Prog.externes" },
688{ "Used %1 Client","Utiliser comme Client %1" },
689{ "No email client installed","Pas de client mail installé" },
690{ "Userdefined email client","Client mail indéfini" },
691{ "OM/Pi email client","OM/Pi Client mail" },
692{ "Close KA/Pi?","Fermer KA/Pi?" },
693{ "\nChanges will be saved!","\nModifications seront sauvées!" },
694{ "Yes!","Yes!" },
695{ "There was an error while attempting to save\n the address book. Please check that some \nother application is not using it. ","Il y a eu une erreur pendant la sauvegarde\n du carnet d'adresses. Merci de vérifier\nsi aucune autre application ne l'utilise. " },
696{ "Saving addressbook ... ","Sauvegarde Carnet d'adresses ... " },
697{ "Addressbook saved!","Carnet d'adresses sauvé!" },
698{ "Default Table View","Vue Table par défaut" },
699{ "Merge and Remove","Fusion et Suppression" },
700{ "Merge","Fusion" },
701{ "Merge Contacts Editor","Fusion de contacts similaires" },
702{ "New List...","Nouvelle liste..." },
703{ "Rename List...","Renomer liste..." },
704{ "Remove List","Supprimer liste" },
705{ "Add Contact","Ajouter contact" },
706{ "Change Email...","Changer Email..." },
707{ "Remove Contact","Supprimer contact" },
708{ "Use Preferred","Préféré" },
709{ "Distribution List Editor","Editeur de liste de distribution" },
710{ "Choose which contacts to export","Choisir contacts à exporter" },
711{ "Which contacts do you want to export?","Quels contacts voulez-vous exporter ?" },
712{ "Contact Selection","Sélection de Contact" },
713{ "&All","Tous (&A)" },
714{ "Export the entire address book","Export du carnet d'adresses complet" },
715{ "&Selected","&Selectionné" },
716{ "Only export contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected.","Only export contacts selected in KAddressBook.\nThis option is disabled if no contacts are selected." },
717{ "By matching &filter","Affichage filtré (&F)" },
718{ "Only export contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters","Only export contacts matching the selected filter.\nThis option is disabled if you haven't defined any filters" },
719{ "By Cate&gories","Par Catégories" },
720{ "Only export contacts who are members of a category that is checked on the list to the left.\nThis option is disabled if you have no categories.","Only export contacts who are members of a category that is checked on the list to the left.\nThis option is disabled if you have no categories." },
721{ "Select a filter to decide which contacts to export.","Select a filter to decide which contacts to export." },
722{ "Check the categories whose members you want to export.","Check the categories whose members you want to export." },
723{ "Sorting","Trier" },
724{ "Criterion:","Critère:" },
725{ "Order:","Ordre:" },
726{ "Ascending","Ascendant" },
727{ "Descending","Descendant" },
728{ "Save file","Sauver" },
729{ "Error","Erreur" },
730{ "Unable to export contacts.","Impossible d'exporter les contacts." },
731{ "\nNo unsaved changes detected!\nNothing will be saved!","\nPas de modification à sauvegarder!" },
732{ "Search:","Recherche:"}
733{ "Email address:","Email:" }
734{ "Set Standard","Par défaut" },
735{ "Remove sync info","Supprimer infos. synchro." },
736{ "For all profiles","Pour tous les profils" },
737{ "","" },
738{ "","" },
739{ "","" },
740{ "","" },
741{ "","" },
diff --git a/bin/kdepim/kopiemail/frenchtranslation.txt b/bin/kdepim/kopiemail/frenchtranslation.txt
new file mode 100644
index 0000000..50bf02e
--- a/dev/null
+++ b/bin/kdepim/kopiemail/frenchtranslation.txt
@@ -0,0 +1,238 @@
1{ "Language:(needs restart)","Langage:(redémarrage)" },
2{ "English","Anglais" },
3{ "German","Allemand" },
4{ "French","Français" },
5{ "Italian","Italien" },
6{ "User defined (usertranslation.txt)","Défini par l'utilisateur (usertranslation.txt)" },
7{ "Time Format(nr):","Format Temps(nr):" },
8{ "24:00","24:00" },
9{ "12:00am","12:00am" },
10{ "Week starts on Sunday","Semaine démarre le Dimanche" },
11{ "Locale","Locale" },
12{ "Date Format:","Date Format:" },
13{ "24.03.2004 (%d.%m.%Y|%A %d %B %Y)","24.03.2004 (%d.%m.%Y|%A %d %B %Y)" },
14{ "03.24.2004 (%m.%d.%Y|%A %B %d %Y)","03.24.2004 (%m.%d.%Y|%A %B %d %Y)" },
15{ "2004-03-24 (%Y-%m-%d|%A %Y %B %d)","2004-03-24 (%Y-%m-%d|%A %Y %B %d)" },
16{ "User defined","Défini par l'utilisateur" },
17{ "User long date:","Date longue :" },
18{ "User short date:","Date courte :" },
19{ "Monday 19 April 2004: %A %d %B %Y","Lundi 19 avril 2004: %A %d %B %Y" },
20{ "Mon 19.04.04: %a %d.%m.%y","Lun 19.04.04: %a %d.%m.%y" },
21{ "Mon, 19.Apr.04: %a, %d.%b.%y","Lun, 19.Avr.04: %a, %d.%b.%y" },
22{ "Date Format","Format Date" },
23{ "Timezone:","Fuseau horaire :" },
24{ "Add 30 min to selected Timezone","Ajout de 30 min au fuseau sélectionné" },
25{ "Timezone has daylight saving","La zone a une heure d'été" },
26{ "Actual start and end is the\nsunday before this date.","Le début et la fin de cette\npériode est un dimanche." },
27{ "The year in the date is ignored.","L'année dans cette date est ignorée." },
28{ "Daylight start:","Heure d'été - départ :" },
29{ "Daylight end:","Heure d'été - fin :" },
30{ "Time Zone","Fuseau horaire" },
31{ "Mon","Lun" },
32{ "Tue","Mar" },
33{ "Wed","Mer" },
34{ "Thu","Jeu" },
35{ "Fri","Ven" },
36{ "Sat","Sam" },
37{ "Sun","Dim" },
38{ "January","Janvier" },
39{ "February","Février" },
40{ "March","Mars" },
41{ "April","Avril" },
42{ "May","Mai" },
43{ "June","Juin" },
44{ "July","Juillet" },
45{ "August","Août" },
46{ "September","Septembre" },
47{ "October","Octobre" },
48{ "November","Novembre" },
49{ "December","Decembre" },
50{ "tomorrow","demain" },
51{ "today","aujourd'hui" },
52{ "yesterday","hier" },
53{ "Monday","Lundi" },
54{ "Tuesday","Mardi" },
55{ "Wednesday","Mercredi" },
56{ "Thursday","Jeudi" },
57{ "Friday","Vendredi" },
58{ "Saturday","Samedi" },
59{ "Sunday","Dimanche" },
60{ "Used Mail Client","Client mail utilisé" },
61{ "Channel:","Canal:" },
62{ "Message:","Message:" },
63{ "Parameters:","Paramètres:" },
64{ "HINT: Delimiter=; Name=%1,Email=%2","INFO: Delimiteur=; Nom=%1,Email=%2" },
65{ "extra Message:","Message supp.:" },
66{ "extra Parameters:","Paramètres supp.:" },
67{ "HINT: Emails=%1,Attachments=%2","INFO: Emails=%1,Pièce jointe=%2" },
68{ "External Apps.","Prog.externes" },
69{ "+01:00 Europa/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
70{ "Used %1 Client","Utiliser comme Client %1" },
71{ "No email client installed","Pas de client mail installé" },
72{ "Userdefined email client","Client mail indéfini" },
73{ "OM/Pi email client","OM/Pi Client mail" },
74{ "Delete","Détruire" },
75{ "New","Nouveau" },
76{ "Edit","Editer" },
77{ "Close","Fermer" },
78{ "Size","Taille" },
79{ "Date","Date" },
80{ "Please set at","Bitte einstellen in" },
81{ "Settings@General TAB","Configuration@générale TAB" },
82{ "KOpieMail/Pi","KOpieMail/Pi" },
83{ "Mail","Mail" },
84{ "Settings","Configuration" },
85{ "Get all new mails","Relever tous les messages" },
86{ "Get new messages","Relever nouveaux messages" },
87{ "Compose new mail","Rédiger nouveau message" },
88{ "Send queued mails","Envoi des messages en attente" },
89{ "Show/Hide folders","Montrer/Cacher dossiers" },
90{ "Drafts","Brouillons" }
91{ "Delete Mail","Détruire messages" },
92{ "Edit settings","Configurer OM/Pi" },
93{ "Configure accounts","Configurer comptes" },
94{ "Mailbox","Boîte" },
95{ "Subject","Sujet" },
96{ "Sender","Expéditeur" },
97{ "Size","Taille" },
98{ "Date","Date" },
99{ "Close","Fermer" },
100{ "Help","Aide" },
101{ "About","A propos" },
102{ "Licence","Licence" },
103{ "LibEtPan Licence","LibEtPan Licence" },
104{ "Settings - some need a restart (nr)","Configuration - peut nécessiter un redémarrage (nr)" },
105{ "HINT: Separate multiple\neMail addresses by ";"","INFO: Séparer les adresses par ";"" },
106{ "Ignore above settings and\nuse KA/Pi "Who am I" instead!","Ignorer les réglages et utiliser\n"Qui suis-je !" de KA/Pi" },
107{ "View mail as html","Afficher en html" },
108{ "Send mails later","Envoyer plus tard" },
109{ "Application(nr)","Application (nr)" },
110{ "OK","OK" },
111{ "Choose...","Choisir..." }
112{ "Fonts","Polices" }
113{ "Mail","Message" }
114{ "Generel","Général" }
115{ "Full &name:"," Nom complet:" }
116{ "E&mail address:","Adresse mail:" }
117{ "Compose mail:","Rédaction message:" },
118{ "Dear Mr.","Cher M." },
119{ "Read mail:","Lecture message:" },
120{ "Hello","Bonjour" },
121{ "Configure Accounts","Configurer Comptes" },
122{ "Name of the Account","Nom du compte" },
123{ "News","Groupes de discussion" },
124{ "Account","Compte" },
125{ "%1 groups subscribed","%1 Abonnements" }
126{ "Type","Type" },
127{ "<p>Please select an account.</p>","<p>Merci de choisir un compte.</p>" },
128{ "Error","Erreur" },
129{ "Configure NNTP","Configurer News" },
130{ "Port","Port :" },
131{ "Server","Serveur :" },
132{ "Use SSL","Utiliser SSL" },
133{ "User","User :" },
134{ "Password","Password :" },
135{ "Use Login","Login" },
136{ "Newsgroup","Newsgroup" },
137{ "Get newsgroup list from server","Récupérer la liste de groupes depuis le serveur" },
138{ "Filter:","Filtre:" },
139{ "Show subscribed","Abonnements" },
140{ "Groups","Groupe(s) de discussion" },
141{ "Configure IMAP","Configurer IMAP" },
142{ "Use secure sockets:","Utiliser un compte sécurisé :" },
143{ "ssh $SERVER exec","ssh $SERVER exec" },
144{ "Prefix","Prefixe" },
145{ "Local storage folder:","Dossier de stockage :" },
146{ "Get only messages smaller","Récupérer uniquement les mails inférieurs à :" },
147{ "kB","kB" },
148{ "Leave Messages on Server","Laisser les messages sur le serveur" },
149{ "Configure POP3","Configurer POP3" },
150{ "ssh $SERVER exec imapd","ssh $SERVER exec imapd" },
151{ "Configure SMTP","Configurer SMTP" },
152{ "Name of the SMTP Server","Nom des serveurs SMTP" },
153{ "Port of the SMTP Server","Port des serveurs SMTP" },
154{ "Fetching folder list","Hole Verzeichnis Liste" },
155{ "Fetch ","Hole " },
156{ "Fetching header list","Hole Titel Liste" },
157{ "Mailbox has %1 mails","La Boîte contient %1 Messages" },
158{ "Read this mail","Lire ce message" },
159{ "Move/Copy this mail","Copier/Déplacer ce message" },
160{ "Delete this mail","Détruire ce message" },
161{ "Move/Copy all selected mail","Copier/Déplacer tous les messages choisis" },
162{ "Delete all selected mails","Détruire tous les messages choisis" },
163{ "Clear selection","Déselectionner" },
164{ "Reply","Répondre" },
165{ "Forward","Faire suivre" },
166{ "Attachments","Pièce jointe" },
167{ "Show Html","Afficher en html" },
168{ "Description","Description" },
169{ "Filename","Nom de fichier" },
170{ "E-Mail by %1","Envoyé par %1" },
171{ "Cc","Copie" },
172{ "To","A : " },
173{ "From","De : " },
174{ "Select Addressee","Choisir une adresse" }
175{ "<p>Do you really want to delete this mail? <br><br>","<p>Voulez-vous vraiment détruire ce message ? <br><br>" },
176{ "Mailbox has %1 mail(s)","La Boîte contient %1 message(s)" },
177{ "Move/Copie all mails","Copier/Déplacer tous les messages" },
178{ "Delete all mails","Détruire tous les messages" },
179{ "Create new subfolder","Créer un sous-dossier" },
180{ "Delete folder","Détruire le dossier" },
181{ "Refresh folder list","Rafraichir la liste" },
182{ "Create new folder","Créer un nouveau dossier" },
183{ "Disconnect","Déconnecter" },
184{ "Set offline","Hors-connexion" },
185{ "Set online","Connecter" }
186{ "Select target box","Choisir la boîte de réception" },
187{ "<b>Store mail(s) to</b>","<b>Stocker le(s) message(s) dans</b>" },
188{ "Folder:","Dossier:" },
189{ "Account:","Compte:" },
190{ "Prefix will prepend, do not enter","Préfixe sera rajouté, inutile l'écrire!" },
191{ "Move mail(s)","Déplacer message(s)" },
192{ "apply only to mails smaller","appliquer uniquement sur les messages plus petits" },
193{ "only mails smaller","Seulement messages inférieurs à:"
194{ " kB"," kB" },
195{ " message %1 of %2"," message %1 de %2" },
196{ "Copying...","Copie en cours..." },
197{ "Copy message %1 of %2","Copie message %1 de %2" },
198{ "Do you really want to delete\nall selected mails?","Voulez-vous vraiment détruire\ntous les messages sélectionnés?" },
199{ "Delete All Mails","Suppression de tous les messages" },
200{ "Deleting ...","Destruction en cours..." },
201{ "Delete message %1 of %2","Destruction message %1 de %2" },
202{ "Compose Message","Rédaction Message" },
203{ "Reply-To","Répondre" },
204{ "BCC","BCC" },
205{ "Signature","Signature" },
206{ "CC","Copie" },
207{ "Options","Options" },
208{ "Delete File","Détruire fichier" },
209{ "Add File","Ajouter fichier" },
210{ "Attachment","Pièce jointe" },
211{ "send later","envoyer plus tard" },
212{ "use:","via : " },
213{ "Save","Sauver" },
214{ "Name","Nom" },
215{ "No Receiver spezified","Pas de destinataire spécifié" },
216{ "Sending mail","Mail en cours d'envoi" },
217{ "No","Non" },
218{ "Yes","Oui" },
219{ "Store message into drafts?\n","Sauvegarder\ncomme brouillon ?" },
220{ "Store message?","Sauvegarder message ?" },
221{ "Select Type","Choix du type" },
222{ "Select Account Type","Choix du type de compte" },
223{ "IMAP","IMAP (stocké sur serveur)" },
224{ "POP3","POP3 (réception)" },
225{ "SMTP","SMTP (envoi)" },
226{ "<p>Do you really want to delete the selected Account?</p>","<p>Voulez-vous vraiment détruire\nle compte sélectionné?</p>" },
227{ "Question","Question" },
228{ "Send this message?","Envoyer ce message?" },
229{ "Stop editing message","Arrêt de l'édition" },
230{ "Sending mail %1 of %2","Envoi du message %1 de %2" },
231{ "%1 of %2 bytes send","%1 de %2 bytes envoyés" },
232{ "Refresh header list","Actualiser la liste d'entêtes" },
233{ "","" },
234{ "","" },
235{ "","" },
236{ "","" },
237{ "","" },
238{ "","" },
diff --git a/bin/kdepim/korganizer/frenchtranslation.txt b/bin/kdepim/korganizer/frenchtranslation.txt
index fc783fa..fb073cd 100644
--- a/bin/kdepim/korganizer/frenchtranslation.txt
+++ b/bin/kdepim/korganizer/frenchtranslation.txt
@@ -1,838 +1,859 @@
1
1{ "10 minutes","10 minutes", }, 2{ "10 minutes","10 minutes", },
2{ "10th","10" }, 3{ "10th","10" },
3{ "11th","11" }, 4{ "11th","11" },
4{ "12 pm Format","Format 12h" }, 5{ "12 pm Format","Format 12h" },
5{ "12th","12" }, 6{ "12th","12" },
6{ "13th","13" }, 7{ "13th","13" },
7{ "14th","14" }, 8{ "14th","14" },
8{ "15th","15" }, 9{ "15th","15" },
9{ "16th","16" }, 10{ "16th","16" },
10{ "17th","17" }, 11{ "17th","17" },
11{ "18th","18" }, 12{ "18th","18" },
12{ "19th","19" }, 13{ "19th","19" },
13{ "1 Day","1 jour" }, 14{ "1 Day","1 jour" },
14{ "1 h","1 h" }, 15{ "1 h","1 h" },
15{ "1 (high)","1 (haut)" }, 16{ "1 (high)","1 (haut)" },
16{ "5 (low)","5 (bas)" }, 17{ "5 (low)","5 (bas)" },
17{ "1st","1er" }, 18{ "1st","1er" },
18{ "20th","20" }, 19{ "20th","20" },
19{ "21st","21" }, 20{ "21st","21" },
20{ "22nd","22" }, 21{ "22nd","22" },
21{ "23rd","23" }, 22{ "23rd","23" },
22{ "24:00 Hour Format","Format 24h" }, 23{ "24:00 Hour Format","Format 24h" },
23{ "24th","24" }, 24{ "24th","24" },
24{ "25th","25" }, 25{ "25th","25" },
25{ "26th","26" }, 26{ "26th","26" },
26{ "27th","27" }, 27{ "27th","27" },
27{ "28th","28" }, 28{ "28th","28" },
28{ "29th","29" }, 29{ "29th","29" },
29{ "2nd","2" }, 30{ "2nd","2" },
30{ "30 minutes","30 Minutes" }, 31{ "30 minutes","30 Minutes" },
31{ "30th","30" }, 32{ "30th","30" },
32{ "31st","31" }, 33{ "31st","31" },
33{ "3rd","3" }, 34{ "3rd","3" },
34{ "4th","4" }, 35{ "4th","4" },
35{ "5 (lowest)","5 (mini)" }, 36{ "5 (lowest)","5 (mini)" },
36{ "5th","5" }, 37{ "5th","5" },
37{ "6th","6" }, 38{ "6th","6" },
38{ "7th","7" }, 39{ "7th","7" },
39{ "8th","8" }, 40{ "8th","8" },
40{ "9th","9" }, 41{ "9th","9" },
41{ "About...","A Propos..." }, 42{ "About...","A Propos..." },
42{ "&Accept","V&Alider" }, 43{ "&Accept","V&Alider" },
43{ "Accept","Valider" }, 44{ "Accept","Valider" },
44{ "Accept A&ll","Tout Va&lider" }, 45{ "Accept A&ll","Tout Va&lider" },
45{ "Access:",":" }, 46{ "Access:",":" },
46{ "A corresponding event is missing in your calendar!","Un événement correspondant manque dans votre calendrier!" }, 47{ "A corresponding event is missing in your calendar!","Un événement correspondant manque dans votre calendrier!" },
47{ "Actions","Actions" }, 48{ "Actions","Actions" },
48{ "Add Filter","Ajout Filtre" }, 49{ "Add Filter","Ajout Filtre" },
49{ "&Add","&Ajouter" }, 50{ "&Add","&Ajouter" },
50{ "Add","Ajouter" }, 51{ "Add","Ajouter" },
51{ "Additional email addresses:","autres emails:" }, 52{ "Additional email addresses:","autres emails:" },
52{ "Additional email address:","autre email:" }, 53{ "Additional email address:","autre email:" },
53{ "&Addressbook","c&arnet d'adresses" }, 54{ "&Addressbook","c&arnet d'adresses" },
54{ "Address &Book...","carnet d'adresses &B" }, 55{ "Address &Book...","carnet d'adresses &B" },
55{ "Agenda Size","Taille Agenda" }, 56{ "Agenda Size","Taille Agenda" },
56{ "Agenda Size:","Taille de l'Agenda:" }, 57{ "Agenda Size:","Taille de l'Agenda:" },
57{ "Agenda view:","Vue Agenda:" }, 58{ "Agenda view:","Vue Agenda:" },
58{ "Agenda view background color:","Couleur de fond de la Vue Agenda:" }, 59{ "Agenda view background color:","Couleur de fond de la Vue Agenda:" },
59{ "Alarm","Alarme" }, 60{ "Alarm","Alarme" },
60{ "All attendees","Tous les Participants" }, 61{ "All attendees","Tous les Participants" },
61{ "AllDayAgenda Height:","Hauteur de l'affichage journée:" }, 62{ "AllDayAgenda Height:","Hauteur de l'affichage journée:" },
62{ "Allday","Journée" }, 63{ "Allday","Journée" },
63{ "Anonymous","Anonyme" }, 64{ "Anonymous","Anonyme" },
64{ "Apply","Appliquer" }, 65{ "Apply","Appliquer" },
65{ "Apr","Avr" }, 66{ "Apr","Avr" },
66{ "April","Avril" }, 67{ "April","Avril" },
67{"Ask for every entry on conflict","Demander pour chaque entrée en conflit"}, 68{"Ask for every entry on conflict","Demander pour chaque entrée en conflit"},
68{ "Ask for preferences before syncing","Demander les préfs. avant la synchro" }, 69{ "Ask for preferences before syncing","Demander les préfs. avant la synchro" },
69{ "Ask for quit when closing KO/Pi","Confirmer avant de fermer KO/Pi" }, 70{ "Ask for quit when closing KO/Pi","Confirmer avant de fermer KO/Pi" },
70{ "Attendees","Participants" }, 71{ "Attendees","Participants" },
71{ "Aug","Août" }, 72{ "Aug","Août" },
72{ "August","Août" }, 73{ "August","Août" },
73{ "Auto-Save","Sauvegarde Auto" }, 74{ "Auto-Save","Sauvegarde Auto" },
74{ "Auto save delay in minutes:","Fréquence de sauvegarde (min):" }, 75{ "Auto save delay in minutes:","Fréquence de sauvegarde (min):" },
75{ "Auto saving...","Sauvegarde Automatique..." }, 76{ "Auto saving...","Sauvegarde Automatique..." },
76{ "Begin on:","Début le:" }, 77{ "Begin on:","Début le:" },
77{ "Begins on: %1","Début le: %1" }, 78{ "Begins on: %1","Début le: %1" },
78{ "<b>From:</b> %1 <b>To:</b> %2","<b>De:</b> %1 <b>à:</b> %2" }, 79{ "<b>From:</b> %1 <b>To:</b> %2","<b>De:</b> %1 <b>à:</b> %2" },
79{ "Bigger","Très grand" }, 80{ "Bigger","Très grand" },
80{ "Biggest","Maxi" }, 81{ "Biggest","Maxi" },
81{ "Big","Grand" }, 82{ "Big","Grand" },
82{ "<b>On:</b> %1","<b>à:</b> %1" }, 83{ "<b>On:</b> %1","<b>à:</b> %1" },
83{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Le:</b> %1 <b>de:S</b> %2 <b>à:</b> %3" }, 84{ "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Le:</b> %1 <b>de:S</b> %2 <b>à:</b> %3" },
84{ "<b>Original event:</b><p>","<b>Evénement source:</b><p>" }, 85{ "<b>Original event:</b><p>","<b>Evénement source:</b><p>" },
85{ " - both are modified after last sync"," - Les deux ont eu des modif. après la dernière synchro" }, 86{ " - both are modified after last sync"," - Les deux ont eu des modif. après la dernière synchro" },
86{ "Busy","Occupé" }, 87{ "Busy","Occupé" },
87{ "&Cancel","Annuler &C" }, 88{ "&Cancel","Annuler &C" },
88{ "Cancel","Annuler" }, 89{ "Cancel","Annuler" },
89{ "Cannot delete To-Do\nwhich has children.","Impossible d'efacer une tâche qui a des dépendances" }, 90{ "Cannot delete To-Do\nwhich has children.","Impossible d'efacer une tâche qui a des dépendances" },
90{ "Cannot delete To-Do which has children.","Impossible d'efacer une tâche qui à des dépendances" }, 91{ "Cannot delete To-Do which has children.","Impossible d'efacer une tâche qui à des dépendances" },
91{ "Can't generate mail:\nNo event selected.","Génération du mail impossible: pas d'événement sélectionné." }, 92{ "Can't generate mail:\nNo event selected.","Génération du mail impossible: pas d'événement sélectionné." },
92{ "Categories...","Catégories..." }, 93{ "Categories...","Catégories..." },
93{ "Categories","Catégories" }, 94{ "Categories","Catégories" },
94{ "Category","Catégorie" }, 95{ "Category","Catégorie" },
95{ "Center View","Centrer" }, 96{ "Center View","Centrer" },
96{ "Change","Ändere" }, 97{ "Change","Ändere" },
97{ "Cinema","Cinéma" }, 98{ "Cinema","Cinéma" },
98{ "Click to add a new Todo","Cliquer pour ajouter nouvelle une tâche" }, 99{ "Click to add a new Todo","Cliquer pour ajouter nouvelle une tâche" },
99{ "Clone Item","Cloner Objet" }, 100{ "Clone Item","Cloner Objet" },
100{ "&Close","Fermer &C" }, 101{ "&Close","Fermer &C" },
101{ "Close","Fermer" }, 102{ "Close","Fermer" },
102{ "Close this dialog to abort deletion!","Fermer cette fenêtre pour annuler la suppression!" }, 103{ "Close this dialog to abort deletion!","Fermer cette fenêtre pour annuler la suppression!" },
103{ "Colors","Couleurs" }, 104{ "Colors","Couleurs" },
104{ "completed","Achevé" }, 105{ "completed","Achevé" },
105{ "completed on %1","Achevé à %1" }, 106{ "completed on %1","Achevé à %1" },
106{ "Complete","Finir" }, 107{ "Complete","Finir" },
107{ "Confidential","Confidentiel" }, 108{ "Confidential","Confidentiel" },
108{ "Configure...","Configurer..." }, 109{ "Configure...","Configurer..." },
109{ "Confirm &deletes","Confirmer l'effacement" }, 110{ "Confirm &deletes","Confirmer l'effacement" },
110{ "Couldn't load calendar\n '%1'.","impossible de charger le calendrier '%1'." }, 111{ "Couldn't load calendar\n '%1'.","impossible de charger le calendrier '%1'." },
111{ "Counter-event Viewer","Compteur de Rdv." }, 112{ "Counter-event Viewer","Compteur de Rdv." },
112{ "Daily ending hour:","Fin de journée:" }, 113{ "Daily ending hour:","Fin de journée:" },
113{ "Daily starting hour:","Début de journée:" }, 114{ "Daily starting hour:","Début de journée:" },
114{ "Daily","Quotidien" }, 115{ "Daily","Quotidien" },
115{ "Date Format","Format de date" }, 116{ "Date Format","Format de date" },
116{ "Date Format:","Format de date:" }, 117{ "Date Format:","Format de date:" },
117{ "DateNavigator:(nr)","Calendrier" }, 118{ "DateNavigator:(nr)","Calendrier" },
118{ "Dates: ","Dates: " }, 119{ "Dates: ","Dates: " },
119{ "Date && Time","Date && Heure" }, 120{ "Date && Time","Date && Heure" },
120{ "Day begins at:","Le jour commence à:" }, 121{ "Day begins at:","Le jour commence à:" },
121{ "Days in Next-X-Days:","Jours dans "Prochains jours":" }, 122{ "Days in Next-X-Days:","Jours dans "Prochains jours":" },
122{ "Days in What's Next:","Jours dans "A venir...":" }, 123{ "Days in What's Next:","Jours dans "A venir...":" },
123{ "day(s)","Jours(s)" }, 124{ "day(s)","Jours(s)" },
124{ "Days to show in Next-X-Days view:","Jours dans la vue des prochains jours:" }, 125{ "Days to show in Next-X-Days view:","Jours dans la vue des prochains jours:" },
125{ "day","Jour" }, 126{ "day","Jour" },
126{ "Dec","Dec" }, 127{ "Dec","Dec" },
127{ "December","Decembre" }, 128{ "December","Decembre" },
128{ "Default alarm time:","Alarme par défaut:" }, 129{ "Default alarm time:","Alarme par défaut:" },
129{ "Default appointment time:","Rendez vous par défaut:" }, 130{ "Default appointment time:","Rendez vous par défaut:" },
130{ "Default event color:","Couleur de l'évenemment par. def.:" }, 131{ "Default event color:","Couleur de l'évenemment par. def.:" },
131{ "Default","Standard" }, 132{ "Default","Standard" },
132{ "Def. duration of new app.:","Durée normale d'un RdV:" }, 133{ "Def. duration of new app.:","Durée normale d'un RdV:" },
133{ "Delete all completed To-Dos?","Effacer toutes les tâches achevées?" }, 134{ "Delete all completed To-Dos?","Effacer toutes les tâches achevées?" },
134{ "Delete All","Tout Effacer" }, 135{ "Delete All","Tout Effacer" },
135{ "Delete all selected","Effacer la selection" }, 136{ "Delete all selected","Effacer la selection" },
136{ "Delete Current","Effacer courant" }, 137{ "Delete Current","Effacer courant" },
137{ "Delete Event...","Effacer Evénement..." }, 138{ "Delete Event...","Effacer Evénement..." },
138{ "Delete Event","Effacer Evénement" }, 139{ "Delete Event","Effacer Evénement" },
139{ "&Delete","&Effacer &D" }, 140{ "&Delete","Effacer" },
140{ "Delete...","Effacer..." }, 141{ "Delete...","Effacer..." },
141{ "Delete","Effacer" }, 142{ "Delete","Effacer" },
142{ "Delete Todo...","Effacer Tâche..." }, 143{ "Delete Todo...","Effacer Tâche..." },
143{ "Delete To-Do","Effacer Tâche" }, 144{ "Delete To-Do","Effacer Tâche" },
144{ "Deleting item %d ...","Effacer l'objet %d..." }, 145{ "Deleting item %d ...","Effacer l'objet %d..." },
145{ "Descriptions","Descriptions" }, 146{ "Descriptions","Descriptions" },
146{ "Deselect All","Tout Déselectionner" }, 147{ "Deselect All","Tout Déselectionner" },
147{ "Details","Details" }, 148{ "Details","Details" },
148{ "Dinner","Diner" }, 149{ "Dinner","Diner" },
149{ "Do you really want\nto close KO/Pi?","Voulez vous vraiment quitter KO/PI?" }, 150{ "Do you really want\nto close KO/Pi?","Voulez vous vraiment quitter KO/PI?" },
150{ "Due Date","Fin" }, 151{ "Due Date","Fin" },
151{ "Due: ","Fin: "}, 152{ "Due: ","Fin: "},
152{ "Due Time","Fin le" }, 153{ "Due Time","Fin le" },
153{ "Due:","Fin:"}, 154{ "Due:","Fin:"},
154{ "Duration: ","Durée: " }, 155{ "Duration: ","Durée: " },
155{ "Edit...","Modifier..." }, 156{ "&Edit...","Modifier..." },
156{ "Edit","Modifier" }, 157{ "Edit","Modifier" },
157{ "Edit Event...","Modifier Evénement..." }, 158{ "Edit Event...","Modifier Evénement..." },
158{ "Edit Event","Modifier Evénement" }, 159{ "Edit Event","Modifier Evénement" },
159{ "Edit exceptions","Modifier exceptions" }, 160{ "Edit exceptions","Modifier exceptions" },
160{ "EditorBox:","Fenêtre d'édition:" }, 161{ "EditorBox:","Fenêtre d'édition:" },
161{ "Edit Recurrence Range","Modifier la fréquence" }, 162{ "Edit Recurrence Range","Modifier la fréquence" },
162{ "Edit Todo...","Modifier Tâche..." }, 163{ "Edit Todo...","Modifier Tâche..." },
163{ "Edit To-Do","Modifier Tâche" }, 164{ "Edit To-Do","Modifier Tâche" },
164{ "E&mail address:","E&mail:" }, 165{ "E&mail address:","E&mail:" },
165{ "(EmptyEmail)","(PasDEmail)" }, 166{ "(EmptyEmail)","(PasDEmail)" },
166{ "(EmptyName)","(SansNom)" }, 167{ "(EmptyName)","(SansNom)" },
167{ "Enable Recurrence","Activer la périodicité" }, 168{ "Enable Recurrence","Activer la périodicité" },
168{ "End after","Fin après"}, 169{ "End after","Fin après"},
169{ "End by:","Fini le"}, 170{ "End by:","Fini le"},
170{ "End Date","Date de fin" }, 171{ "End Date","Date de fin" },
171{ "End:","Fin:" }, 172{ "End:","Fin:" },
172{ "End Time","heure de fin" }, 173{ "End Time","heure de fin" },
173{ "English","Anglais" }, 174{ "English","Anglais" },
174{ "Event","Evénement" }, 175{ "Event","Evénement" },
175{ "Event list","Liste Even..." }, 176{ "Event list","Liste Even..." },
176{ "Events","Evénements" }, 177{ "Events","Evénements" },
177{ "Event Viewer:","Voir Rdv:" }, 178{ "Event Viewer:","Voir Rdv:" },
178{ "every","Tous les" }, 179{ "every","Tous les" },
179{ "Exceptions...","Exceptions..." }, 180{ "Exceptions...","Exceptions..." },
180{ "Exceptions","Exceptions" }, 181{ "Exceptions","Exceptions" },
181{ "Exclude holidays","Exclure les congés" }, 182{ "Exclude holidays","Exclure les congés" },
182{ "Exclude Saturdays","Exclure les samedis" }, 183{ "Exclude Saturdays","Exclure les samedis" },
183{ "Feb","Fev" }, 184{ "Feb","Fev" },
184{ "February","Fevrier" }, 185{ "February","Fevrier" },
185{ "&Find","chercher &F" }, 186{ "&Find","chercher &F" },
186{ "Fonts","Polices" }, 187{ "Fonts","Polices" },
187{ "Force take local entry always","Priorité aux objets locaux" }, 188{ "Force take local entry always","Priorité aux objets locaux" },
188{ "Force take remote entry always","Priorité aux objets distants"}, 189{ "Force take remote entry always","Priorité aux objets distants"},
189{ "Free","Libre" }, 190{ "Free","Libre" },
190{ "Friday","Vendredi" }, 191{ "Friday","Vendredi" },
191{ "Fri","Ven" }, 192{ "Fri","Ven" },
192{ "From:","De:" }, 193{ "From:","De:" },
193{ "Full &name:","&Nom et prénom:" }, 194{ "Full &name:","&Nom et prénom:" },
194{ "General","General" }, 195{ "General","General" },
195{ "German","Allemand" }, 196{ "German","Allemand" },
196{ "Gifts","Cadeaux" }, 197{ "Gifts","Cadeaux" },
197{ "Go to Today","-> Aujourd'hui" }, 198{ "Go to Today","-> Aujourd'hui" },
198{ "Help","Aide" }, 199{ "Help","Aide" },
199{ "Hide Dates","Cacher les Dates" }, 200{ "Hide Dates","Cacher les Dates" },
200{ "Highlight color:","Sélection:" }, 201{ "Highlight color:","Sélection:" },
201{ "Holiday color:","Congés:" }, 202{ "Holiday color:","Congés:" },
202{ "hour(s)","heure(s)" }, 203{ "hour(s)","heure(s)" },
203{ "In %1 days: ","Dans %1 jours: " }, 204{ "In %1 days: ","Dans %1 jours: " },
204{ "Incomplete Todo:","tâches en cours:" }, 205{ "Incomplete Todo:","tâches en cours:" },
205{ "Information","Information" }, 206{ "Information","Information" },
206{ "Invalid search expression,\ncannot perform ","Recherche impossible:\nexpression incorrecte" }, 207{ "Invalid search expression,\ncannot perform ","Recherche impossible:\nexpression incorrecte" },
207{ "Jan","Jan" }, 208{ "Jan","Jan" },
208{ "January","Janvier" }, 209{ "January","Janvier" },
209{ "JournalView:","Journal:" }, 210{ "JournalView:","Journal:" },
210{ "Journals","Journaux" }, 211{ "Journals","Journaux" },
211{ "Jul","Jul" }, 212{ "Jul","Jul" },
212{ "July","Juillet" }, 213{ "July","Juillet" },
213{ "Jump to date","Aller à la date" }, 214{ "Jump to date","Aller à la date" },
214{ "June","Juin" }, 215{ "June","Juin" },
215{ "Jun","Jun" }, 216{ "Jun","Jun" },
216{ "Key Bindings...","Raccoucis..." }, 217{ "Key Bindings...","Raccoucis..." },
217{ "Kids","Enfants" }, 218{ "Kids","Enfants" },
218{ "Known Problems...","Problèmes connus..." }, 219{ "Known Problems...","Problèmes connus..." },
219{ "KO/Pi Find ","Recherche KO/Pi " }, 220{ "KO/Pi Find ","Recherche KO/Pi " },
220{ "KO/Pi Find: ","Recherche : " }, 221{ "KO/Pi Find: ","Recherche : " },
221{ "KO/Pi is starting ... "," Démarrage de KO/Pi ... le temps d'un café ..." }, 222{ "KO/Pi is starting ... "," Démarrage de KO/Pi ... le temps d'un café ..." },
222{ "Language:(needs restart)","Langue (redémarrage!)" }, 223{ "Language:(needs restart)","Langue (redémarrage!)" },
223{ "Language:","Langue" }, 224{ "Language:","Langue" },
224{ "Large","Moyen +" }, 225{ "Large","Moyen +" },
225{ "List View:","Liste:" }, 226{ "List View:","Liste:" },
226{ "List View","Liste" }, 227{ "List View","Liste" },
227{ "Load/Save","Charger/Enreg..." }, 228{ "Load/Save","Charger/Enreg..." },
228{ "Load Template","Charger Modèle" }, 229{ "Load Template","Charger Modèle" },
229{ "Locale","Traduction" }, 230{ "Locale","Traduction" },
230{ "Local temp file:","données temp.:" }, 231{ "Local temp file:","données temp.:" },
231{ "Location: ","Lieu: " }, 232{ "Location: ","Lieu: " },
232{ "Location:","Lieu:" }, 233{ "Location:","Lieu:" },
233{ "Mail client","Client Mail" }, 234{ "Mail client","Client Mail" },
234{ "Mail Client","Client Mail" }, 235{ "Mail Client","Client Mail" },
235{ "March","Mars" }, 236{ "March","Mars" },
236{ "Mar","Mar" }, 237{ "Mar","Mar" },
237{ "May","Mai" }, 238{ "May","Mai" },
238{ "M. Bains line:","Ligne M. Bains:" }, 239{ "M. Bains line:","Ligne M. Bains:" },
239{ "Medium","Moyen -" }, 240{ "Medium","Moyen -" },
240{ "Method","Methode" }, 241{ "Method","Methode" },
241{ "minute(s)","Minute(s)" }, 242{ "minute(s)","Minute(s)" },
242{ "Monday","Lundi" }, 243{ "Monday","Lundi" },
243{ "Mon","Lu" }, 244{ "Mon","Lu" },
244{ "Monthly","Mensuel" }, 245{ "Monthly","Mensuel" },
245{ "Month not long enough","Le mois est trop court" }, 246{ "Month not long enough","Le mois est trop court" },
246{ "month(s)","Mois" }, 247{ "month(s)","Mois" },
247{ "Month view:","Vue Mensuelle:" }, 248{ "Month view:","Vue Mensuelle:" },
248{ "Month view uses category colors","Utiliser les couleurs des cat. dans la vue mensuelle" }, 249{ "Month view uses category colors","Utiliser les couleurs des cat. dans la vue mensuelle" },
249{ "Todo view uses category colors","Utiliser les couleurs des cat. dans la vue des tâches" }, 250{ "Todo view uses category colors","Utiliser les couleurs des cat. dans la vue des tâches" },
250{ "Move &Down","&Descendre" }, 251{ "Move &Down","&Descendre" },
251{ "Move &Up","Monter &U" }, 252{ "Move &Up","Monter &U" },
252{ "Name:","Nom:" }, 253{ "Name:","Nom:" },
253{ "Name","Nom" }, 254{ "Name","Nom" },
254{ "\nAre you sure you want\nto delete this event?","\nConfirmez vous la suppression \nde l'événement?" }, 255{ "\nAre you sure you want\nto delete this event?","\nConfirmez vous la suppression \nde l'événement?" },
255{ "%n Days","%n Jours" }, 256{ "%n Days","%n Jours" },
256{ "Never","Jameais" }, 257{ "Never","Jameais" },
257{ "New event...","Nouv. Even..." }, 258{ "New event...","Nouv. Even..." },
258{ "New event","Nouv. Even" }, 259{ "New event","Nouv. Even" },
259{ "New Event...","Nouv. Even..." }, 260{ "New Event...","Nouv. Even..." },
260{ "New Events/Todos should","Nouv. Even/Tâche doivent" }, 261{ "New Events/Todos should","Nouv. Even/Tâche doivent" },
261{ "&New","&Nouveau" }, 262{ "&New","&Nouveau" },
262{ "New","Nouveau", }, 263{ "New","Nouveau", },
263{ "New Sub-Todo...","Nouv Sous-Tâche..." }, 264{ "New Sub-Todo...","Nouv Sous-Tâche..." },
264{ "New Todo...","Nouv Tâche..." }, 265{ "New Todo...","Nouv Tâche..." },
265{ "Next Alarm: ","Prochaine Sonnerie: ", }, 266{ "Next Alarm: ","Prochaine Sonnerie: ", },
266{ "&Next Day","&prochai&n Jour", }, 267{ "&Next Day","&prochai&n Jour", },
267{ "Next days view uses full window","Prochains jours sur toute la fenêtre" }, 268{ "Next days view uses full window","Prochains jours sur toute la fenêtre" },
268{ "Next month","Prochain mois" }, 269{ "Next month","Prochain mois" },
269{ "&Next Week","prochai&ne semaine" }, 270{ "&Next Week","prochai&ne semaine" },
270{ "Next year","Prochaine Année" }, 271{ "Next year","Prochaine Année" },
271{ "Next Year","Prochaine Année" }, 272{ "Next Year","Prochaine Année" },
272{ "%n h","%n h" }, 273{ "%n h","%n h" },
273{ "No ending date","Pas de date de fin" }, 274{ "No ending date","Pas de date de fin" },
274{ "No event, nothing to do.","Pas d'événement, pas de tâche" }, 275{ "No event, nothing to do.","Pas d'événement, pas de tâche" },
275{ "No event selected.","Aucun événement sélectionné" }, 276{ "No event selected.","Aucun événement sélectionné" },
276{ "No","Non" }, 277{ "No","Non" },
277{ "No program set","Aucun Programme choisi", }, 278{ "No program set","Aucun Programme choisi", },
278{ "Normal","Moyen" }, 279{ "Normal","Moyen" },
279{ "[No selection]","Aucune sélection", }, 280{ "[No selection]","Aucune sélection", },
280{ "No sound set","Pas de son choisi", }, 281{ "No sound set","Pas de son choisi", },
281{ "no time ","pas d'heure", }, 282{ "no time ","pas d'heure", },
282{ "no time","pas d'heure", }, 283{ "no time","pas d'heure", },
283{ "No Time","pas d'heure" }, 284{ "No Time","pas d'heure" },
284{ "November","Novembre" }, 285{ "November","Novembre" },
285{ "Nov","Nov", }, 286{ "Nov","Nov", },
286{ "\nThis event recurs\nover multiple dates.\n","\nCet Evénement est périodique.\n" }, 287{ "\nThis event recurs\nover multiple dates.\n","\nCet Evénement est périodique.\n" },
287{ "occurrence(s)","occurrence(s)" }, 288{ "occurrence(s)","occurrence(s)" },
288{ "October","Octobre" }, 289{ "October","Octobre" },
289{ "Oct","Oct", }, 290{ "Oct","Oct", },
290{ "O-due!","Ü-fällig! " }, 291{ "O-due!","Ü-fällig! " },
291{ "&OK","&OK" }, 292{ "&OK","&OK" },
292{ "Ok+Show!","Ok+Afficher" }, 293{ "Ok+Show!","Ok+Afficher" },
293{ "Organizer: %1","Organisateur %1" }, 294{ "Organizer: %1","Organisateur %1" },
294{ "Organizer","Organisateur" }, 295{ "Organizer","Organisateur" },
295{ "Owner: ","Propriétaire: " }, 296{ "Owner: ","Propriétaire: " },
296{ "Owner:","Propriétaire:" }, 297{ "Owner:","Propriétaire:" },
297{ "<p><b>Priority:</b> %2</p>","<p><b>Priorité:</b> %2</p>" }, 298{ "<p><b>Priority:</b> %2</p>","<p><b>Priorité:</b> %2</p>" },
298{ "Pick a date to display","Choisir un jour à afficher" }, 299{ "Pick a date to display","Choisir un jour à afficher" },
299{ "Please specify a valid due date.","Spécifiez une date de fin valide."}, 300{ "Please specify a valid due date.","Spécifiez une date de fin valide."},
300{ "Please specify a valid end date, for example '%1'.","Spécifiez une date de fin valide. ex:'%1'." }, 301{ "Please specify a valid end date, for example '%1'.","Spécifiez une date de fin valide. ex:'%1'." },
301{ "Please specify a valid start date.","Spécifiez une date de début valide." }, 302{ "Please specify a valid start date.","Spécifiez une date de début valide." },
302{ "Please specify a valid start date, for example '%1'.","Spécifiez une date de début valide. ex:'%1'." }, 303{ "Please specify a valid start date, for example '%1'.","Spécifiez une date de début valide. ex:'%1'." },
303{ "Please specify a valid start time.","Spécifiez une date de début valide"}, 304{ "Please specify a valid start time.","Spécifiez une date de début valide"},
304{ "Please specify a valid start time, for example '%1'.","Spécifiez une date de début valide. ex:'%1'." }, 305{ "Please specify a valid start time, for example '%1'.","Spécifiez une date de début valide. ex:'%1'." },
305{ "Preferences - some settings need a restart (nr)","Préférence - certains réglages nécessitent un redémarrage (bn)" }, 306{ "Preferences - some settings need a restart (nr)","Préférence - certains réglages nécessitent un redémarrage (bn)" },
306{ "&Previous Day","Jour précédent" }, 307{ "&Previous Day","Jour précédent" },
307{ "Previous month","Mois précédent" }, 308{ "Previous month","Mois précédent" },
308{ "Previous Month","Mois précédent" }, 309{ "Previous Month","Mois précédent" },
309{ "&Previous Week","Semaine précédente" }, 310{ "&Previous Week","Semaine précédente" },
310{ "Previous year","Année Précédente" }, 311{ "Previous year","Année Précédente" },
311{ "Previous Year","Année Précédente" }, 312{ "Previous Year","Année Précédente" },
312{ "Printing","Imprimer" }, 313{ "Printing","Imprimer" },
313{ "&Print...","Im&primer" }, 314{ "&Print...","Im&primer" },
314{ "Print","Impression" }, 315{ "Print","Impression" },
315{ "Print calendar...","Imprimer calendrier..." }, 316{ "Print calendar...","Imprimer calendrier..." },
316{ "View Type","Type de vue"}, 317{ "View Type","Type de vue"},
317{ "Print day","Jour" }, 318{ "Print day","Jour" },
318{ "Print week","Semaine" }, 319{ "Print week","Semaine" },
319{ "Print month","Mois" }, 320{ "Print month","Mois" },
320{ "Print todos","Tâches" }, 321{ "Print todos","Tâches" },
321{ "&Setup Printer...","Imprimante&s" }, 322{ "&Setup Printer...","Imprimante&s" },
322{ "Date & Time Range","Date et interval" }, 323{ "Date & Time Range","Date et interval" },
323{ "Start month:","Mois départ:" }, 324{ "Start month:","Mois départ:" },
324{ "End month:","Mois fin:" }, 325{ "End month:","Mois fin:" },
325{ "Print week numbers","Imprimer les numéros de semaine" }, 326{ "Print week numbers","Imprimer les numéros de semaine" },
326{ "Include todos that are due on the printed day(s)","Inclure les tâches liées au(x) jour(s) imprimé(s)" }, 327{ "Include todos that are due on the printed day(s)","Inclure les tâches liées au(x) jour(s) imprimé(s)" },
327{ "Priority:","Priorité:" }, 328{ "Priority:","Priorité:" },
328{ "Private","Privé" }, 329{ "Private","Privé" },
329{ "Proceed","Lancer" }, 330{ "Proceed","Lancer" },
330{ "Public","Public" }, 331{ "Public","Public" },
331{ "Purge","Entferne" }, 332{ "Purge","Entferne" },
332{ "Purge Completed","Effacer les Tâches achevées" }, 333{ "Purge Completed","Effacer les Tâches achevées" },
333{ "Purge To-Dos","Effacer les Tâches" }, 334{ "Purge To-Dos","Effacer les Tâches" },
334{ "read-only","lecture seule" }, 335{ "read-only","lecture seule" },
335{ "Recur every","Tous les " }, 336{ "Recur every","Tous les " },
336{ "Recur in the month of","Reproduit au mois de" }, 337{ "Recur in the month of","Reproduit au mois de" },
337{ "Recur on the","Reproduit le" }, 338{ "Recur on the","Reproduit le" },
338{ "Recur on this day","Reproduit durant ce jour" }, 339{ "Recur on this day","Reproduit durant ce jour" },
339{ "Recurrence Range...","Fréquence..." }, 340{ "Recurrence Range...","Fréquence..." },
340{ "Recurrence Range","Fréquence" }, 341{ "Recurrence Range","Fréquence" },
341{ "Recurrence Rule","Règle de périodicité" }, 342{ "Recurrence Rule","Règle de périodicité" },
342{ "Recurrence","Périodicité" }, 343{ "Recurrence","Périodicité" },
343{ "Recurs","Periode" }, 344{ "Recurs","Periode" },
344{"&Reject","&Rejetter"}, 345{"&Reject","&Rejetter"},
345{ "Reminder:","Rappel:" }, 346{ "Reminder:","Rappel:" },
346{ "Rem.:","Rappel:" }, 347{ "Rem.:","Rappel:" },
347{ "Rem.","Rappel:" }, 348{ "Rem.","Rappel:" },
348{ "Remote file:","Fichier Distant:"}, 349{ "Remote file:","Fichier Distant:"},
349{ "Remote IP:","IP Distante:" }, 350{ "Remote IP:","IP Distante:" },
350{ "Remote syncing (via ssh/scp) network settings ","Synchro Distante (via ssh/scp) Paramètres réseau" }, 351{ "Remote syncing (via ssh/scp) network settings ","Synchro Distante (via ssh/scp) Paramètres réseau" },
351{ "Remote user:","Utilisateur Dist."}, 352{ "Remote user:","Utilisateur Dist."},
352{ "&Remove","efface&r" }, 353{ "&Remove","efface&r" },
353{ "Remove","effacer" }, 354{ "Remove","effacer" },
354{ "Request response","Demander une réponse" }, 355{ "Request response","Demander une réponse" },
355{ "Role:","Rôle:" }, 356{ "Role:","Rôle:" },
356{ "Role","Rôle" }, 357{ "Role","Rôle" },
357{ "Sat","Sa" }, 358{ "Sat","Sa" },
358{ "Saturday","Samedi" }, 359{ "Saturday","Samedi" },
359{ "Search for:","Rechercher:" }, 360{ "Search for:","Rechercher:" },
360{ "Search In","chercher dans" }, 361{ "Search In","chercher dans" },
361{ "Search...","Chercher..." }, 362{ "Search...","Chercher..." },
362{ "Search","Chercher" }, 363{ "Search","Chercher" },
363{ "Select Addresses","Selectionner Adresses" }, 364{ "Select Addresses","Selectionner Adresses" },
364{ "Select all","Tout sélectionner" }, 365{ "Select all","Tout sélectionner" },
365{ "Select a month","Choisir Mois" }, 366{ "Select a month","Choisir Mois" },
366{ "Select a week","Choisir Semaine" }, 367{ "Select a week","Choisir Semaine" },
367{ "Select a year","Choisir année" }, 368{ "Select a year","Choisir année" },
368{ "Send directly","Envoyer Directement" }, 369{ "Send directly","Envoyer Directement" },
369{ "&Send Messages","envoyer les me&ssages", }, 370{ "&Send Messages","envoyer les me&ssages", },
370{ "Sep","Sep" }, 371{ "Sep","Sep" },
371{ "September","Septembre" }, 372{ "September","Septembre" },
372{ "Shopping","Courses" }, 373{ "Shopping","Courses" },
373{ "Use short date in (WN/E) view","Date abrégée dans la vue (WN/E)" }, 374{ "Use short date in (WN/E) view","Date abrégée dans la vue (WN/E)" },
374{ "Show Dates","Voir dates" }, 375{ "Show Dates","Voir dates" },
375{ "Show events that recur daily in date nav.","Voir les éven. quotidiens dans le calendrier" }, 376{ "Show events that recur daily in date nav.","Voir les éven. quotidiens dans le calendrier" },
376{ "Show Event...","Voir éven..." }, 377{ "Show Event...","Voir éven..." },
377{ "Show ev. that recur weekly in date nav.","Voir les éven. hebdo. dans le calendrier" }, 378{ "Show ev. that recur weekly in date nav.","Voir les éven. hebdo. dans le calendrier" },
378{ "Show Marcus Bains line","Voir la ligne Marcus Bains" }, 379{ "Show Marcus Bains line","Voir la ligne Marcus Bains" },
379{ "Show summary after syncing","Voir résumé après la Synchro" }, 380{ "Show summary after syncing","Voir résumé après la Synchro" },
380{ "Show time as:","Heure:" }, 381{ "Show time as:","Heure:" },
381{ "Show Todo...","Voir tâche..." }, 382{ "Show Todo...","Voir tâche..." },
382{ "Show topmost todo prios in What's Next:","Afficher Tâches prio dans 'A venir':"}, 383{ "Show topmost todo prios in What's Next:","Afficher Tâches prio dans 'A venir':"},
383{ "Show topmost todo prios in What Next:","Afficher Tâches prio dans 'A venir':"}, 384{ "Show topmost todo prios in What Next:","Afficher Tâches prio dans 'A venir':"},
384{ "Show vertical screen (Needs restart)","Affichage Vertical (redémarrage!)" }, 385{ "Show vertical screen (Needs restart)","Affichage Vertical (redémarrage!)" },
385{ "&Show","&Voir &I" }, 386{ "&Show","&Voir" },
386{ "Show...","Voir..." }, 387{ "Show...","Voir..." },
387{ "Show","Voir" }, 388{ "Show","Voir" },
388{ "Small","Petit" }, 389{ "Small","Petit" },
389{ "Sorry","Désolé" }, 390{ "Sorry","Désolé" },
390{"Sorry, the copy command failed!\nCommand was:\n","Désolé,\n erreur dans la commande:\n"}, 391{"Sorry, the copy command failed!\nCommand was:\n","Désolé,\n erreur dans la commande:\n"},
391{ "Start:","Démarrer:" }, 392{ "Start:","Démarrer:" },
392{ "Start Date","Date Début" }, 393{ "Start Date","Date Début" },
393{ "Start date: %1","Date Début: %1" }, 394{ "Start date: %1","Date Début: %1" },
394{ "Start Time","Heure début" }, 395{ "Start Time","Heure début" },
395{ "Status:","Etat:" }, 396{ "Status:","Etat:" },
396{ "Status","Etat:" }, 397{ "Status","Etat:" },
397{ "Summaries","Titre" }, 398{ "Summaries","Titre" },
398{ "Summary:","Titre:" }, 399{ "Summary:","Titre:" },
399{ "Summary","Titre" }, 400{ "Summary","Titre" },
400{ "Sunday","Dimanche" }, 401{ "Sunday","Dimanche" },
401{ "Sun","Dim" }, 402{ "Sun","Dim" },
402{ "Sync preferences:","Prefs Synchro" }, 403{ "Sync preferences:","Prefs Synchro" },
403{ "Sync Prefs","Prefs Synchro" }, 404{ "Sync Prefs","Prefs Synchro" },
404{ "Syncronize","Synchroniser" }, 405{ "Syncronize","Synchroniser" },
405{ "Take local entry on conflict","Conflit: prendre les objets locaux " }, 406{ "Take local entry on conflict","Conflit: prendre les objets locaux " },
406{ "Take newest entry on conflict","Conflit: prendre les objets les plus récents" }, 407{ "Take newest entry on conflict","Conflit: prendre les objets les plus récents" },
407{ "Take remote entry on conflict","Conflit: prendre les objets distants" }, 408{ "Take remote entry on conflict","Conflit: prendre les objets distants" },
408{ "Template '%1' does not contain a valid Todo.","Le modèle '%1' ne contient pas de tâche valide" }, 409{ "Template '%1' does not contain a valid Todo.","Le modèle '%1' ne contient pas de tâche valide" },
409{ "Template does not contain a valid Event.","Le modèle '%1' ne contient pas d'even. valide" }, 410{ "Template does not contain a valid Event.","Le modèle '%1' ne contient pas d'even. valide" },
410{ "Template...","Modèle..." }, 411{ "Template...","Modèle..." },
411{ "This day","Ce jour" }, 412{ "This day","Ce jour" },
412{ "This is an experimental feature. ","Fonction experimentale" }, 413{ "This is an experimental feature. ","Fonction experimentale" },
413{ "This item will be\npermanently deleted.","Cet objet sera\ndétruit." }, 414{ "This item will be\npermanently deleted.","Cet objet sera\ndétruit." },
414{ "This item will be permanently deleted.", "Cet objet sera détruit" }, 415{ "This item will be permanently deleted.", "Cet objet sera détruit" },
415{ "Thu","Jeu" }, 416{ "Thu","Jeu" },
416{ "Thursday","Jeudi" }, 417{ "Thursday","Jeudi" },
417{ "Time associated","Heure associée" }, 418{ "Time associated","Heure associée" },
418{ "Time bar:","Barre des heures:" }, 419{ "Time bar:","Barre des heures:" },
419{ "Time && Date","Date && Heure" }, 420{ "Time && Date","Date && Heure" },
420{ "Time Format","Format heure" }, 421{ "Time Format","Format heure" },
421{ "Time Format(nr):","Format heure (redémarrage!)" }, 422{ "Time Format(nr):","Format heure (redémarrage!)" },
422{ "Date Labels:","Etiquettes date:" }, 423{ "Date Labels:","Etiquettes date:" },
423{ "Time: ","Heure: " }, 424{ "Time: ","Heure: " },
424{ "Timezone:","riode:" }, 425{ "Timezone:","Fuseau horaire :" },
425{ "Tiny","Très petit" }, 426{ "Tiny","Très petit" },
426{ "To: ","à: " }, 427{ "To: ","à: " },
427{ "To:","à:" }, 428{ "To:","à:" },
428{ "Today: ","Aujourd'hui: " }, 429{ "Today: ","Aujourd'hui: " },
429{ "Todo due today color:","Couleurs des tâches du jour" }, 430{ "Todo due today color:","Couleurs des tâches du jour" },
430{ "To-do items:","Tâches:" }, 431{ "To-do items:","Tâches:" },
431{ "Todo overdue color:","Couleurs des taches en retard " }, 432{ "Todo overdue color:","Couleurs des taches en retard " },
432{ "Todo","Tâche" }, 433{ "Todo","Tâche" },
433{ "Todo Viewer","Visualisation" }, 434{ "Todo Viewer","Visualisation" },
434{ "To-do view shows completed Todos","Voir les Tâches achevées dans la liste" }, 435{ "To-do view shows completed Todos","Voir les Tâches achevées dans la liste" },
435{ "ToDoView:","Liste des tâches:" }, 436{ "ToDoView:","Liste des tâches:" },
436{ "Toggle Alarm","Sonnerie" }, 437{ "Toggle Alarm","Sonnerie" },
437{ "Toggle Allday","Afficher Journée" }, 438{ "Toggle Allday","Afficher Journée" },
438{ "Tomorrow: ","Demain: " }, 439{ "Tomorrow: ","Demain: " },
439{ "Tue","Mar" }, 440{ "Tue","Mar" },
440{ "Tuesday","Mardi" }, 441{ "Tuesday","Mardi" },
441{ "Two entries are in conflict, if: ","deux objets sont en conflit si:" }, 442{ "Two entries are in conflict, if: ","deux objets sont en conflit si:" },
442{ "Unable to find template '%1'.","modèle '%1' introuvable." }, 443{ "Unable to find template '%1'.","modèle '%1' introuvable." },
443{ "Unknown","Inconnu" }, 444{ "Unknown","Inconnu" },
444{ "Up","Monter" }, 445{ "Up","Monter" },
445{ "Use password (if not, ask when syncing)","mot de passe: (demandé sinon à la synchro)" }, 446{ "Use password (if not, ask when syncing)","mot de passe: (demandé sinon à la synchro)" },
446{ "User defined","Choix utilisateur" }, 447{ "User defined","Choix utilisateur" },
447{ "User long date:","Format Dates longues:" }, 448{ "User long date:","Format Dates longues:" },
448{ "User short date:","Format Dates courtes:" }, 449{ "User short date:","Format Dates courtes:" },
449{ "What's Next","A venir..." }, 450{ "What's Next","A venir..." },
450{ "View","Vue" }, 451{ "View","Vue" },
451{ "View Fonts","Voir police" }, 452{ "View Fonts","Voir police" },
452{ "Views","Vues" }, 453{ "Views","Vues" },
453{ "Wed","Mer" }, 454{ "Wed","Mer" },
454{ "Wednesday","Mercredi" }, 455{ "Wednesday","Mercredi" },
455{ "Week %1","Semaine %1" }, 456{ "Week %1","Semaine %1" },
456{ "Weekly","Hebdomadaire" }, 457{ "Weekly","Hebdomadaire" },
457{ "Week starts on Sunday","La semaine commence Dim." }, 458{ "Week starts on Sunday","La semaine commence Dim." },
458{ "What's Next View:","Vue "A venir..." " }, 459{ "What's Next View:","Vue "A venir..." " },
459{ "What's Next ?","A venir..." }, 460{ "What's Next ?","A venir..." },
460{ "Working Hours","Horaires de travail" }, 461{ "Working Hours","Horaires de travail" },
461{ "Working hours color:","Couleur des heures de travail:" }, 462{ "Working hours color:","Couleur des heures de travail:" },
462{ "Write back existing entries only","Ne réécrire que les objets existants" }, 463{ "Write back existing entries only","Ne réécrire que les objets existants" },
463{ "Write back synced file","Ne réécrire que les objets synchronisés" }, 464{ "Write back synced file","Ne réécrire que les objets synchronisés" },
464{ "Yearly","Annuel" }, 465{ "Yearly","Annuel" },
465{ "year(s)","année(s)" }, 466{ "year(s)","année(s)" },
466{ "Yes","Oui" }, 467{ "Yes","Oui" },
467{ "You have %d item(s) selected.\n","%d Objets sélectionnés.\n" }, 468{ "You have %d item(s) selected.\n","%d Objets sélectionnés.\n" },
468{ "You have to restart KOrganizer for this setting to take effect.","Vous devez redémarrer KO/Pi pour que ces modifications prennent effet." }, 469{ "You have to restart KOrganizer for this setting to take effect.","Vous devez redémarrer KO/Pi pour que ces modifications prennent effet." },
469{ "week(s) on:","Semaine(s) le: " }, 470{ "week(s) on:","Semaine(s) le: " },
470{ "Full menu bar(nr)","Barre menu complète" }, 471{ "Full menu bar(nr)","Barre menu complète" },
471{ "Timezone has daylight saving","Utilisation heure d'été" }, 472{ "Timezone has daylight saving","Utilisation heure d'été" },
472{ "Actual start and end is the\nsunday before this date.","Date de départ est le\ndimanche précédent." }, 473{ "Actual start and end is the\nsunday before this date.","Le début et la fin de cette\npériode est le dimanche précédent la date.." },
473{ "The year in the date is ignored.","L'année de cette date est ignorée." }, 474{ "The year in the date is ignored.","L'année de cette date est ignorée." },
474{ "Daylight start:","Heure d'été à partir:" }, 475{ "Daylight start:","Heure d'été à partir:" },
475{ "Daylight end:","Heure d'hiver à partir:" }, 476{ "Daylight end:","Heure d'hiver à partir:" },
476{ "Time Zone","Heure de" }, 477{ "Add 30 min to selected Timezone","Ajout de 30 min au fuseau sélectionné" },
478{ "Used Mail Client","Client mail utilisé" },
479{ "Channel:","Canal:" },
480{ "Message:","Message:" },
481{ "Parameters:","Paramètres:" },
482{ "HINT: Delimiter=; Name=%1,Email=%2","INFO: Delimiteur=; Nom=%1,Email=%2" },
483{ "extra Message:","Message supp.:" },
484{ "extra Parameters:","Paramètres supp.:" },
485{ "HINT: Emails=%1,Attachments=%2","INFO: Emails=%1,Pièce jointe=%2" },
486{ "External Apps.","Prog.externes" },
487{ "+01:00 Europa/Oslo(CET)","+01:00 Europe/Oslo(CET)" },
488{ "Used %1 Client","Utiliser comme Client %1" },
489{ "No email client installed","Pas de client mail installé" },
490{ "Userdefined email client","Client mail indéfini" },
491{ "OM/Pi email client","OM/Pi Client mail" },
492{ "Time Zone","Fuseau horaire" },
477{ "Monday 19 April 2004: %A %d %B %Y","Lundi 19 Avril 2004: %A %d %B %Y" }, 493{ "Monday 19 April 2004: %A %d %B %Y","Lundi 19 Avril 2004: %A %d %B %Y" },
478{ "%A: Monday --- %a: Mon","%A: Lundi --- %a: Lun" }, 494{ "%A: Monday --- %a: Mon","%A: Lundi --- %a: Lun" },
479{ "minutely","par min" }, 495{ "minutely","par min" },
480{ "hourly","horaire" }, 496{ "hourly","horaire" },
481{ "daily","quotidien" }, 497{ "daily","quotidien" },
482{ "weekly","hebdomadaire" }, 498{ "weekly","hebdomadaire" },
483{ "monthly","mensuel" }, 499{ "monthly","mensuel" },
484{ "day-monthly","jour-mois" }, 500{ "day-monthly","jour-mois" },
485{ "month-yearly","mois-année" }, 501{ "month-yearly","mois-année" },
486{ "day-yearly","jour-année" }, 502{ "day-yearly","jour-année" },
487{ "position-yearly","pos-annuel" }, 503{ "position-yearly","pos-annuel" },
488{ "Edit item on doubleclick (if not, show)","Double-cliquer pour éditer (sinon, pour voir)" }, 504{ "Edit item on doubleclick (if not, show)","Double-cliquer pour éditer (sinon, pour voir)" },
489{ "Highlight current day in agenda","Surligner aujourd'hui dans l'agenda" }, 505{ "Highlight current day in agenda","Surligner aujourd'hui dans l'agenda" },
490{ "Use light color for highlight current day","Couleur claire pour surligner aujourd'hui" }, 506{ "Use light color for highlight current day","Couleur claire pour surligner aujourd'hui" },
491{ "Highlight selection in Time Edit","Surligner la selection dans le "time edit" " }, 507{ "Highlight selection in Time Edit","Surligner la selection dans le "time edit" " },
492{ "Hold fullscreen on view change","Passer en plein écran au chgt. de vue" }, 508{ "Hold fullscreen on view change","Passer en plein écran au chgt. de vue" },
493{ "Hold non-fullscreen on view change","Quitter le plein écran au chgt. de vue" }, 509{ "Hold non-fullscreen on view change","Quitter le plein écran au chgt. de vue" },
494{ "Event list view uses full window","Liste des even. en plein écran" }, 510{ "Event list view uses full window","Liste des even. en plein écran" },
495{ "Set agenda to DayBeginsAt on change","Jour de départ au chgt. de vue" }, 511{ "Set agenda to DayBeginsAt on change","Jour de départ au chgt. de vue" },
496{ "Set agenda to current time on change","Heure de départ au chgt. de vue" }, 512{ "Set agenda to current time on change","Heure de départ au chgt. de vue" },
497{ "Listview uses monthly timespan","Vue mensuelle de la liste" }, 513{ "Listview uses monthly timespan","Vue mensuelle de la liste" },
498{ "Enable tooltips displaying summary of ev.","Bulles d'information des événements" }, 514{ "Enable tooltips displaying summary of ev.","Bulles d'information des événements" },
499{ "ViewChange","Changer Vue" }, 515{ "ViewChange","Changer Vue" },
500{ "Default alarm *.wav file:","Sonnerie par défaut (*.wav):" }, 516{ "Default alarm *.wav file:","Sonnerie par défaut (*.wav):" },
501{ "This setting is useless for 5500 user!","Reglage inutile pour le Z5500" }, 517{ "This setting is useless for 5500 user!","Reglage inutile pour le Z5500" },
502{ "File","Fichier" }, 518{ "File","Fichier" },
503{ "Clone...","Cloner.." }, 519{ "Clone...","Cloner.." },
504{ "Move...","Déplacer..." }, 520{ "Move...","Déplacer..." },
505{ "Beam...","Env par IR..." }, 521{ "Beam...","Env par IR..." },
506{ "&Clone...","&Cloner.." }, 522{ "&Clone...","&Cloner.." },
507{ "&Move...","&Déplacer &M..." }, 523{ "&Move...","Déplacer..." },
508{ "&Beam...","&Env par IR &B..." }, 524{ "&Beam...","&Env par IR &B..." },
509{ "Show Completed","Tâches achevées" }, 525{ "Show Completed","Tâches achevées" },
510{ "Show Quick Todo","Tâches rapides" }, 526{ "Show Quick Todo","Tâches rapides" },
511{ "Unparent Todo","Tâche ss dépendance" }, 527{ "Unparent Todo","Tâche ss dépendance" },
512{ "Save selected to file...","Sauver sélection..." }, 528{ "Save selected to file...","Sauver sélection..." },
513{ "Add Categ. to selected...","Ajout Cat. à la sélection..." }, 529{ "Add Categ. to selected...","Ajout Cat. à la sélection..." },
514{ "Set Categ. for selected...","Ajout Cat. à la sélection." }, 530{ "Set Categ. for selected...","Ajout Cat. à la sélection." },
515{ "Beam selected via IR","Env Sel. par IR..." }, 531{ "Beam selected via IR","Env Sel. par IR..." },
516{ "Search","Chercher" }, 532{ "Search","Chercher" },
517{ "Date Picker","Choix Date" }, 533{ "Date Picker","Choix Date" },
518{ "Day View","Vue journée" }, 534{ "Day View","Vue journée" },
519{ "Work Week","Sem de trav" }, 535{ "Work Week","Sem de trav" },
520{ "Week","Semaine" }, 536{ "Week","Semaine" },
521{ "Month","Mois" }, 537{ "Month","Mois" },
522{ "Todo View","Liste des tâches" }, 538{ "Todo View","Liste des tâches" },
523{ "Journal","Journal" }, 539{ "Journal","Journal" },
524{ "Next days","Jours suiv" }, 540{ "Next days","Jours suiv" },
525{ "Print agenda selection...","Imprimer la sélection..." }, 541{ "Print agenda selection...","Imprimer la sélection..." },
526{ "Toggle DateNavigator","Calendrier" }, 542{ "Toggle DateNavigator","Calendrier" },
527{ "Toggle FilterView","Filtre" }, 543{ "Toggle FilterView","Filtre" },
528{ "Prev. month","Mois préced" }, 544{ "Prev. month","Mois préced" },
529{ "Go backward","Retour" }, 545{ "Go backward","Retour" },
530{ "Go forward","Suite" }, 546{ "Go forward","Suite" },
531{ "Synchronize","Synchroniser" }, 547{ "Synchronize","Synchroniser" },
532{ "AgendaSize","Taille Agenda }, 548{ "AgendaSize","Taille Agenda },
533{ "Import (*.ics/*.vcs) file","Importer (*.ics,*.vcs)" }, 549{ "Import (*.ics/*.vcs) file","Importer (*.ics,*.vcs)" },
534{ "Import last file","Importer dern. fich." }, 550{ "Import last file","Importer dern. fich." },
535{ "Import Opie/Qtopia Cal.","Importer Opie/Qtopia cal." }, 551{ "Import Opie/Qtopia Cal.","Importer Opie/Qtopia cal." },
536{ "Import Birthdays (KA/Pi)","Importer anniversaires de KAPi" }, 552{ "Import Birthdays (KA/Pi)","Importer anniversaires de KAPi" },
537{ "Import from OL","Importer depuis Outlook" }, 553{ "Import from OL","Importer depuis Outlook" },
538{ "Load Calendar Backup","Ouvrir une sauvegarde" }, 554{ "Load Calendar Backup","Ouvrir une sauvegarde" },
539{ "Save Calendar Backup","Créer une sauvegarde" }, 555{ "Save Calendar Backup","Créer une sauvegarde" },
540{ "Export VCalendar","Exporter vCalendar" }, 556{ "Export VCalendar","Exporter vCalendar" },
541{ "Manage new categories...","Gérer les nlles catégories" }, 557{ "Manage new categories...","Gérer les nlles catégories" },
542{ "Beam complete calendar...","Env. tout par IR" }, 558{ "Beam complete calendar...","Env. tout par IR" },
543{ "Beam filtered calendar...","Env. don. filtrées par IR" }, 559{ "Beam filtered calendar...","Env. don. filtrées par IR" },
544{ "Remote via ssh","Distant par ssh" }, 560{ "Remote via ssh","Distant par ssh" },
545{ "With local file","Fichier local" }, 561{ "With local file","Fichier local" },
546{ "With last file","Dernier fichier" }, 562{ "With last file","Dernier fichier" },
547{ "KO/Pi: Ready for beaming","KO/Pi: prêt a envoyer" }, 563{ "KO/Pi: Ready for beaming","KO/Pi: prêt a envoyer" },
548{ "KO/Pi:Beaming done","KO/Pi: Envoi terminé!" }, 564{ "KO/Pi:Beaming done","KO/Pi: Envoi terminé!" },
549{ "Save filename","Enrgister nom" }, 565{ "Save filename","Enrgister nom" },
550{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Fichier déja existant!\nEcraser l'ancien fichier de:\n%1?\n" }, 566{ "File already exists!\nOld file from:\n%1\nOverwrite?\n","Fichier déja existant!\nEcraser l'ancien fichier de:\n%1?\n" },
551{ "KO/Pi: Warning!","KO/Pi: Attention!" }, 567{ "KO/Pi: Warning!","KO/Pi: Attention!" },
552{ "Overwrite!","Ecrase!" }, 568{ "Overwrite!","Ecrase!" },
553{ "KO/Pi:Saved %1","KO/Pi:%1 Enregistré" }, 569{ "KO/Pi:Saved %1","KO/Pi:%1 Enregistré" },
554{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Tous les objets sélectionnés\nseront définitivements effacés.\n(l'effacement peut être\nlong sur un PDA)\n" }, 570{ "All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n","Tous les objets sélectionnés\nseront définitivements effacés.\n(l'effacement peut être\nlong sur un PDA)\n" },
555{ "KO/Pi Confirmation","Confirmation KO/Pi" }, 571{ "KO/Pi Confirmation","Confirmation KO/Pi" },
556{ "Close dialog to abort deletion!","Fermer la fenêtre pour annuler l'eff.!" }, 572{ "Close dialog to abort deletion!","Fermer la fenêtre pour annuler l'eff.!" },
557{ "Deleting item %d ...","Effacer objet %d ..." }, 573{ "Deleting item %d ...","Effacer objet %d ..." },
558{ "%d items remaining in list.","%d objets réstants." }, 574{ "%d items remaining in list.","%d objets réstants." },
559{ "Size","Taille" }, 575{ "Size","Taille" },
560{ "Date","Date" }, 576{ "Date","Date" },
561{ "Mime Type","Type mime" }, 577{ "Mime Type","Type mime" },
562{ "All Files","Ts les fichiers" }, 578{ "All Files","Ts les fichiers" },
563{ "Files","Fichiers" }, 579{ "Files","Fichiers" },
564{ "Documents","Documents" }, 580{ "Documents","Documents" },
565{ "Select Categories","Selectionner Categ." }, 581{ "Select Categories","Selectionner Categ." },
566{ " &Deselect All ","Tout &Desélectionner" }, 582{ " &Deselect All ","Tout &Desélectionner" },
567{ "A&dd","Ajout &d" }, 583{ "A&dd","Ajout &d" },
568{ "&Modify","&Modifier" }, 584{ "&Modify","&Modifier" },
569{ "Edit Categories","Editer Catergories" }, 585{ "Edit Categories","Editer Catergories" },
570{ " &Edit Categories "," &Editer Catergories " }, 586{ " &Edit Categories "," &Editer Catergories " },
571{ "Beam Options","Env Options par IR" }, 587{ "Beam Options","Env Options par IR" },
572{ " With timezone "," Avec zone " }, 588{ " With timezone "," Avec zone " },
573{ " Local time ", " Heure locale " }, 589{ " Local time ", " Heure locale " },
574{ "Manage new Categories","Gérer les nlles Catégories" }, 590{ "Manage new Categories","Gérer les nlles Catégories" },
575{ "Add to category list","Ajouter à la liste" }, 591{ "Add to category list","Ajouter à la liste" },
576{ "Remove from Events/Todos","Supprimer des Evénements/Tâches" }, 592{ "Remove from Events/Todos","Supprimer des Evénements/Tâches" },
577{ "After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n ","Lors de l'Import/Chargement/Synchron\nil peut y avoir des nouvelles Catégories\ndans les événements et les tâches\nQue faire?\n " }, 593{ "After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n ","Lors de l'Import/Chargement/Synchron\nil peut y avoir des nouvelles Catégories\ndans les événements et les tâches\nQue faire?\n " },
578{ "New categories not in list:","Nouvelles catégories qui ne sont pas dans la liste:" }, 594{ "New categories not in list:","Nouvelles catégories qui ne sont pas dans la liste:" },
579{ "File format","Format date" }, 595{ "File format","Format date" },
580{ "Time format","Format heure" }, 596{ "Time format","Format heure" },
581{ "Delete all\ncompleted To-Dos?","Effacer les\Tâches?" }, 597{ "Delete all\ncompleted To-Dos?","Effacer les\Tâches?" },
582{ "KO/Pi:Saving Data to File ...","KO/Pi: Enregistrement ..." }, 598{ "KO/Pi:Saving Data to File ...","KO/Pi: Enregistrement ..." },
583{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Fichier enreg en %d sec %d ms" }, 599{ "KO/Pi:File Saved. Needed %d sec, %d ms","KO/Pi: Fichier enreg en %d sec %d ms" },
584{ "h","h" }, 600{ "h","h" },
585{ "min","Min" }, 601{ "min","Min" },
586{ "hou","h" }, 602{ "hou","h" },
587{ "day","Jour" }, 603{ "day","Jour" },
588{ "French","Français" }, 604{ "French","Français" },
589{ "Time","Heure" }, 605{ "Time","Heure" },
590{ "Event Viewer","Visualisation" }, 606{ "Event Viewer","Visualisation" },
591{ "Cancel Sync","Annuler Synchro" }, 607{ "Cancel Sync","Annuler Synchro" },
592{ "Remote","Distant" }, 608{ "Remote","Distant" },
593{ "Local","Local" }, 609{ "Local","Local" },
594{ "Conflict! Please choose entry","Conflit! Chosissez un objet" }, 610{ "Conflict! Please choose entry","Conflit! Chosissez un objet" },
595{ "Local: ","Local: " }, 611{ "Local: ","Local: " },
596{ "Remote: ","Distant: " }, 612{ "Remote: ","Distant: " },
597{ "Last modified: ","Dernier modifié: " }, 613{ "Last modified: ","Dernier modifié: " },
598{ "Location: ","Lieu: " }, 614{ "Location: ","Lieu: " },
599{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>De:</b> %1 </p><p><b>à:</b> %2</p>" }, 615{ "<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>","<p><b>De:</b> %1 </p><p><b>à:</b> %2</p>" },
600{ "<p><b>On:</b> %1</p>","<p><b>le:</b> %1</p>" }, 616{ "<p><b>On:</b> %1</p>","<p><b>le:</b> %1</p>" },
601{ "<p><b>From:</b> %1</p> ","<p><b>de:</b> %1</p> " }, 617{ "<p><b>From:</b> %1</p> ","<p><b>de:</b> %1</p> " },
602{ "<p><b>To:</b> %1</p>","<p><b>à:</b> %1</p>" }, 618{ "<p><b>To:</b> %1</p>","<p><b>à:</b> %1</p>" },
603{ "<p><b>On:</b> %1</p> ","<p><b>à:</b> %1</p> " }, 619{ "<p><b>On:</b> %1</p> ","<p><b>à:</b> %1</p> " },
604{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>de:</b> %1 <b>à:</b> %2</p>" }, 620{ "<p><b>From:</b> %1 <b>To:</b> %2</p>","<p><b>de:</b> %1 <b>à:</b> %2</p>" },
605{ "This is a %1 recurring event.","Ceci est un %1 événement récurrent." }, 621{ "This is a %1 recurring event.","Ceci est un %1 événement récurrent." },
606{ "<b>Next recurrence is on:</b>","<b>Prochaine occurence le:</b>" }, 622{ "<b>Next recurrence is on:</b>","<b>Prochaine occurence le:</b>" },
607{ "<b>Last recurrence was on:</b>","<b>Dernière occurence le:</b>" }, 623{ "<b>Last recurrence was on:</b>","<b>Dernière occurence le:</b>" },
608{ "( %1 min before )","( %1 min avant )" }, 624{ "( %1 min before )","( %1 min avant )" },
609{ "<b>Alarm on: ","<b>Sonnerie à: " }, 625{ "<b>Alarm on: ","<b>Sonnerie à: " },
610{ "<b>Details: </b>","<b>Détails: </b>" }, 626{ "<b>Details: </b>","<b>Détails: </b>" },
611{ "<p><b>Priority:</b> %2</p>","<p><b>Priorité:</b> %2</p>" }, 627{ "<p><b>Priority:</b> %2</p>","<p><b>Priorité:</b> %2</p>" },
612{ "<p><i>%1 % completed</i></p>","<p><i>%1 % achevé</i></p>" }, 628{ "<p><i>%1 % completed</i></p>","<p><i>%1 % achevé</i></p>" },
613{ "Organizer","Organisateur" }, 629{ "Organizer","Organisateur" },
614{ "Save","Enregistrer" }, 630{ "Save","Enregistrer" },
615{ "Exit (+save)","Quitter (et Enreg.)" }, 631{ "Exit (+save)","Quitter (et Enreg.)" },
616{ "Home","Maison" }, 632{ "Home","Maison" },
617{ "Office","Bureau" }, 633{ "Office","Bureau" },
618{ "Import Sharp Calendar","Import Sharp Calendar" }, 634{ "Import Sharp Calendar","Import Sharp Calendar" },
619{ "This todo has been cancelled!","Cette tâche a été annulée!" }, 635{ "This todo has been cancelled!","Cette tâche a été annulée!" },
620{ "This event has been cancelled!","Cet événement à été annulé!" }, 636{ "This event has been cancelled!","Cet événement à été annulé!" },
621{ "Cancelled","Annulé" }, 637{ "Cancelled","Annulé" },
622{ "Multiple sync","Synchro Multiple" }, 638{ "Multiple sync","Synchro Multiple" },
623{ "Local file","Fichier local" }, 639{ "Local file","Fichier local" },
624{ "Last file","Dernier fichier" }, 640{ "Last file","Dernier fichier" },
625{ "Keys + Colors...","Touches + Couleur..." }, 641{ "Keys + Colors...","Touches + Couleur..." },
626{ "Mini icons in toolbar(nr)","Mini Icônes(redem)" }, 642{ "Mini icons in toolbar(nr)","Mini Icônes(redem)" },
627{ "Quick save(w/o Unicode)","sauvegarde rapide (sans Unicode)" }, 643{ "Quick save(w/o Unicode)","sauvegarde rapide (sans Unicode)" },
628{ "Choose...","Choisir..." }, 644{ "Choose...","Choisir..." },
629{ "Use colors for application:","Utiliser les couleur pour:" }, 645{ "Use colors for application:","Utiliser les couleur pour:" },
630{ "Buttons, menus, etc.:","Boutons, Menus, etc.:" }, 646{ "Buttons, menus, etc.:","Boutons, Menus, etc.:" },
631{ "Frames, labels, etc.:","Fenêtres, Etiquettes, etc.:" }, 647{ "Frames, labels, etc.:","Fenêtres, Etiquettes, etc.:" },
632{ "Show parent To-Do's in What's Next view","Montrer Tâches primaires dans la vue "A venir..."" }, 648{ "Show parent To-Do's in What's Next view","Montrer Tâches primaires dans la vue "A venir..."" },
633{ "Show location in What's Next view","Montrer le Lieu dans la vue "A venir..."" }, 649{ "Show location in What's Next view","Montrer le Lieu dans la vue "A venir..."" },
634{ "Show events that recur ","Montrer les événements récurrents" }, 650{ "Show events that recur ","Montrer les événements récurrents" },
635{ "Show in every cell ","Montrer dans toutes les cellules" }, 651{ "Show in every cell ","Montrer dans toutes les cellules" },
636{ "short month","Mois courts" }, 652{ "short month","Mois courts" },
637{ "icons","Icônes" }, 653{ "icons","Icônes" },
638{ "Enable scrollbars in month view cells","Utiliser ascenseurs dans les cellules de la vue mensuelle" }, 654{ "Enable scrollbars in month view cells","Utiliser ascenseurs dans les cellules de la vue mensuelle" },
639{ "Show Sat/Sun together","Sam/Dim ensemble" }, 655{ "Show Sat/Sun together","Sam/Dim ensemble" },
640{ "Categorie colors are applied to text","Appliquer les couleurs des cat. au texte" }, 656{ "Categorie colors are applied to text","Appliquer les couleurs des cat. au texte" },
641{ "Month view uses day colors","Vue Mensuelle en couleurs" }, 657{ "Month view uses day colors","Vue Mensuelle en couleurs" },
642{ "Day color odd months","Couleurs des jours des mois pairs" }, 658{ "Day color odd months","Couleurs des jours des mois pairs" },
643{ "Day color even months","Couleurs des jours des mois impairs" }, 659{ "Day color even months","Couleurs des jours des mois impairs" },
644{ "Color for Sundays + category "Holiday"","Couleur Dimanche et Categorie "Fêrié"" }, 660{ "Color for Sundays + category "Holiday"","Couleur Dimanche et Categorie "Fêrié"" },
645{ "To-do view shows complete as 'xx %'","Voir l'avancement comme ' xx % '" }, 661{ "To-do view shows complete as 'xx %'","Voir l'avancement comme ' xx % '" },
646{ "Small To-do view uses smaller font","Police plus petite ds la petite liste des tâche" }, 662{ "Small To-do view uses smaller font","Police plus petite ds la petite liste des tâche" },
647{ "Colors are applied to text","Colorier le texte" }, 663{ "Colors are applied to text","Colorier le texte" },
648{ "Use internal alarm notification","Utiliser l'alarme interne" }, 664{ "Use internal alarm notification","Utiliser l'alarme interne" },
649{ "Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n","Attention: KO/Pi doit être lancé pour que l'alarme fonctionne... pour le Zaurus, il est conseillé de désactiver cette fonction et d'utiliser KO/Pi alarm.\n" }, 665{ "Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n","Attention: KO/Pi doit être lancé pour que l'alarme fonctionne... pour le Zaurus, il est conseillé de désactiver cette fonction et d'utiliser KO/Pi alarm.\n" },
650{ "Play beeps count:","Nombre de bips: " }, 666{ "Play beeps count:","Nombre de bips: " },
651{ "Beeps interval in sec:","Interval entre bip: " }, 667{ "Beeps interval in sec:","Interval entre bip: " },
652{ "Default suspend time in min:","Délai de mise en veille standard: " }, 668{ "Default suspend time in min:","Délai de mise en veille standard: " },
653{ "Auto suspend count:","Décompte le la mise en veille" }, 669{ "Auto suspend count:","Décompte le la mise en veille" },
654{ "Alarm *.wav file for newly created alarm:","Sonnerie *.wav pour la nouvelle alarme:" }, 670{ "Alarm *.wav file for newly created alarm:","Sonnerie *.wav pour la nouvelle alarme:" },
655{ "New profile","Nouveau Profil" }, 671{ "New profile","Nouveau Profil" },
656{ "Clone profile","Dupliquer Profil" }, 672{ "Clone profile","Dupliquer Profil" },
657{ "Delete profile","Effacer Profil" }, 673{ "Delete profile","Effacer Profil" },
658{ "Profile:","Profil:" }, 674{ "Profile:","Profil:" },
659{ "Include in multiple sync","Inclure dans les synchro multiples" }, 675{ "Include in multiple sync","Inclure dans les synchro multiples" },
660{ "Force: Take local entry always","Force: toujours les objets locaux" }, 676{ "Force: Take local entry always","Force: toujours les objets locaux" },
661{ "Force: Take remote entry always","Force: toujours les objets distants" }, 677{ "Force: Take remote entry always","Force: toujours les objets distants" },
662{ "Show summary after sync","Afficher un resumé après la synchro" }, 678{ "Show summary after sync","Afficher un resumé après la synchro" },
663{ "Write back file","réécrire le fichier" }, 679{ "Write back file","réécrire le fichier" },
664{ "Remote file (w down/upload command)","Fichier distant (par telechargement)" }, 680{ "Remote file (w down/upload command)","Fichier distant (par telechargement)" },
665{ "Pre sync (download) command:","commande (téléchargement) av synchro:" }, 681{ "Pre sync (download) command:","commande (téléchargement) av synchro:" },
666{ "Local device name:","nom machine locale:" }, 682{ "Local device name:","nom machine locale:" },
667{ "Ask for preferences before sync","demander les préférences avant la synchro." }, 683{ "Ask for preferences before sync","demander les préférences avant la synchro." },
668{ "Sync preferences","Prefs Synchro." }, 684{ "Sync preferences","Prefs Synchro." },
669{ "Profile kind","Type de profile" }, 685{ "Profile kind","Type de profile" },
670{ "Local file","Fichier local" }, 686{ "Local file","Fichier local" },
671{ "Local file:","Fichier local:" }, 687{ "Local file:","Fichier local:" },
672{ "Post sync (upload) command:","commande (envoi) apres sync:" }, 688{ "Post sync (upload) command:","commande (envoi) apres sync:" },
673{ "Fill in default values for:","remplir les val. par def. pour:" }, 689{ "Fill in default values for:","remplir les val. par def. pour:" },
674{ "Hint: Use $PWD$ for placeholder of password!","Truc: utiliser $PWD$ à la place du mdp!" }, 690{ "Hint: Use $PWD$ for placeholder of password!","INFO: utiliser $PWD$ à la place du mdp!" },
675{ "Synchronization Preferences","Préférences de synchronisation"}, 691{ "Synchronization Preferences","Préférences de synchronisation"},
676{ "Device","machine" }, 692{ "Device","machine" },
677{ "Sync with file \n...%1\nfrom:\n%2\n","Synchro avec le ficher \n...%1\nde:\n%2\n" }, 693{ "Sync with file \n...%1\nfrom:\n%2\n","Synchro avec le ficher \n...%1\nde:\n%2\n" },
678{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n","Bilan de Synchronisation:\n\n %d objets ajoutés en local\n %d objets ajoutés en distant\n %d objets modifiés en local\n %d objets modifiés en distant\n %d objets effacés en local\n %d objets éffacés en distant\n" }, 694{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n","Bilan de Synchronisation:\n\n %d objets ajoutés en local\n %d objets ajoutés en distant\n %d objets modifiés en local\n %d objets modifiés en distant\n %d objets effacés en local\n %d objets éffacés en distant\n" },
679{ "Synchronization successful","Synchronisation réussie" }, 695{ "Synchronization successful","Synchronisation réussie" },
680{ "Sync cancelled or failed. Nothing synced.","Sync annulée ou erronée. Rien n'à été synchronisé." }, 696{ "Sync cancelled or failed. Nothing synced.","Sync annulée ou erronée. Rien n'à été synchronisé." },
681{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Le fichier de synchro \n...%1\nn'existe pas!\nRien n'à été synchronisé!\n" }, 697{ "Sync file \n...%1\ndoes not exist!\nNothing synced!\n","Le fichier de synchro \n...%1\nn'existe pas!\nRien n'à été synchronisé!\n" },
682{ "Sync filename(*.ics/*.vcs)","Fichier de synchro(*.ics/*.vcs)" }, 698{ "Sync filename(*.ics/*.vcs)","Fichier de synchro (*.ics/*.vcs)" },
683{ "Enter password","Mot de Passe" }, 699{ "Enter password","Mot de Passe" },
684{ "Do you really want\nto remote sync\nwith profile \n","Confirmer la synchro\ndistante avec le profil: \n" }, 700{ "Do you really want\nto remote sync\nwith profile \n","Confirmer la synchro\ndistante avec le profil: \n" },
685{ "Copy remote file to local machine...","Copier le fichier distant en local..." }, 701{ "Copy remote file to local machine...","Copier le fichier distant en local..." },
686{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Désole,la commande:\n %1 \na échoué \ntestez la commande sur la console\npour plus de detail.\n" }, 702{ "Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n","Désolé,la commande:\n %1 \na échoué \ntestez la commande sur la console\npour plus de detail.\n" },
687{ "Writing back file result: ","Réécrire le fichier résultat: " }, 703{ "Writing back file result: ","Réécrire le fichier résultat: " },
688{ "Syncronization sucessfully completed","Synchronisation réussie" }, 704{ "Syncronization sucessfully completed","Synchronisation réussie" },
689{ "Edit Calendar Filters","Editer les fitres de calendrier" }, 705{ "Edit Calendar Filters","Editer les fitres de calendrier" },
690{ "Enter filter name:","Nom du nouv. filtre:" }, 706{ "Enter filter name:","Nom du nouv. filtre:" },
691{ "Add Filter","Ajouter Filtre" }, 707{ "Add Filter","Ajouter Filtre" },
692{ "Question","Question" }, 708{ "Question","Question" },
693{ "Filter position: ","Position du filtre: " }, 709{ "Filter position: ","Position du filtre: " },
694{ "Month View","Vue Mensuelle" }, 710{ "Month View","Vue Mensuelle" },
695{ "This profil cannot be deleted!\n","Ce profil ne peut\npas être effacé!" }, 711{ "This profil cannot be deleted!\n","Ce profil ne peut\npas être effacé!" },
696{ "KO/Pi config error","Erreur de config KO/Pi" }, 712{ "KO/Pi config error","Erreur de config KO/Pi" },
697{ "Local device name undefined!\nPlease define device name!","Machine locale non nommée!\nDonnez un nom SVP!" }, 713{ "Local device name undefined!\nPlease define device name!","Machine locale non nommée!\nDonnez un nom SVP!" },
698{ "Multiple profiles with same name!\nPlease use unique profile names!","Plusieurs profils ont le même nom!\nDonnez des noms de profils uniques!" }, 714{ "Multiple profiles with same name!\nPlease use unique profile names!","Plusieurs profils ont le même nom!\nDonnez des noms de profils uniques!" },
699{ "Access: ","Voir: " }, 715{ "Access: ","Voir: " },
700{ "Needs Action","Attente Action" }, 716{ "Needs Action","Attente Action" },
701{ "Accepted","Validé" }, 717{ "Accepted","Validé" },
702{ "Declined","Refusé" }, 718{ "Declined","Refusé" },
703{ "Tentative","Essai" }, 719{ "Tentative","Essai" },
704{ "Delegated","Délégué" }, 720{ "Delegated","Délégué" },
705{ "Completed","Achevé" }, 721{ "Completed","Achevé" },
706{ "In Process","En cours" }, 722{ "In Process","En cours" },
707{ "Participant","Participant" }, 723{ "Participant","Participant" },
708{ "Optional Participant","Participant facultatif" }, 724{ "Optional Participant","Participant facultatif" },
709{ "Observer","Observateur" }, 725{ "Observer","Observateur" },
710{ "Chair","Conducteur" }, 726{ "Chair","Conducteur" },
711{ "Not supported \non desktop!\n","Pas supporté en version Desktop" }, 727{ "Not supported \non desktop!\n","Pas supporté en version Desktop" },
712{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Pas de selection!\nimpression de la vue Agenda telle que vous la voyez.\nPour seélectionner une plage d'impression,\nselectionnez (en pointant avec le bouton droit appuyé) une plage de valeur\ndans une colonne. " }, 728{ "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Pas de selection!\nimpression de la vue Agenda telle que vous la voyez.\nPour seélectionner une plage d'impression,\nselectionnez (en pointant avec le bouton droit appuyé) une plage de valeur\ndans une colonne. " },
713{ "Date range: ","Plage de dates: " }, 729{ "Date range: ","Plage de dates: " },
714{ "Not supported \non PDA!\n","Non supporté\nsur le PDA. " }, 730{ "Not supported \non PDA!\n","Non supporté\nsur le PDA. " },
715{ "Syncing - close to abort!","Synchro en cours - fermer pour annuler." }, 731{ "Syncing - close to abort!","Synchro en cours - fermer pour annuler." },
716{ "Add / remove events","Ajout./supp Even." }, 732{ "Add / remove events","Ajout./supp Even." },
717{ "File does not exist:\n '%1'.","Pas de fichier:\n '%1'." }, 733{ "File does not exist:\n '%1'.","Pas de fichier:\n '%1'." },
718{ "Couldn't load calendar\n '%1'.","Imposs. de charger le calendrier:\n '%1'." }, 734{ "Couldn't load calendar\n '%1'.","Imposs. de charger le calendrier:\n '%1'." },
719{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nLe fichier à changé!\nTaille: %1 octets.\nDernière modif: %2\nVoulez vous:\n\n - Enregistrer en écrasant le fichier?\n - Synchroniser avec le fichier, puis enregistrer?\n - Annuler sans enregistrer? \n" }, 735{ "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nLe fichier à changé!\nTaille: %1 octets.\nDernière modif: %2\nVoulez vous:\n\n - Enregistrer en écrasant le fichier?\n - Synchroniser avec le fichier, puis enregistrer?\n - Annuler sans enregistrer? \n" },
720{ "Overwrite","Ecraser" }, 736{ "Overwrite","Ecraser" },
721{ "Sync+save","Synchro+Enreg" }, 737{ "Sync+save","Synchro+Enreg" },
722{ "Default","Par défaut" }, 738{ "Default","Par défaut" },
723{ " Categories added to list! "," Catégories ajoutées à la liste! " }, 739{ " Categories added to list! "," Catégories ajoutées à la liste! " },
724{ " %d items?"," %d Objets?" }, 740{ " %d items?"," %d Objets?" },
725{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nCet événement est periodique!.\nÊtes vous sur de vouloir \neffacer cet Evénement\net toutes ses occurences?" }, 741{ "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nCet événement est periodique!.\nÊtes vous sur de vouloir \neffacer cet Evénement\net toutes ses occurences?" },
726{ " ?\n\nDelete:\n"," ?\n\nEffacer:\n" }, 742{ " ?\n\nDelete:\n"," ?\n\nEffacer:\n" },
727{ "Current","Courrant" }, 743{ "Current","Courrant" },
728{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nCet événement est periodique!.\nVoulez vous effacer cet Evénement\net toutes ses occurences ou juste l'ocurrence du:\n" }, 744{ "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nCet événement est periodique!.\nVoulez vous effacer cet Evénement\net toutes ses occurences ou juste l'ocurrence du:\n" },
729{ "All","Tout" }, 745{ "All","Tout" },
730{ "Data Loss Warning","Attention: perte de données" }, 746{ "Data Loss Warning","Attention: perte de données" },
731{ "Proceed","Executer" }, 747{ "Proceed","Executer" },
732{ "The journal entries can not be\nexported to a vCalendar file.","Le journal ne peut être exporter\nvers un fichier vCalendar" }, 748{ "The journal entries can not be\nexported to a vCalendar file.","Le journal ne peut être exporter\nvers un fichier vCalendar" },
733{ "Filter disabled ","Filtre désactivé" }, 749{ "Filter disabled ","Filtre désactivé" },
734{ "Filter selected: ","Filtre sélectionné: " }, 750{ "Filter selected: ","Filtre sélectionné: " },
735{ "Toggle Cancel","Annuler autres" }, 751{ "Toggle Cancel","Annuler autres" },
736{ "&Toggle Cancel","Annuler au&tres" }, 752{ "&Toggle Cancel","Annuler au&tres" },
737{ "Configure Toolbar","Configurer Toolbar" }, 753{ "Configure Toolbar","Configurer Toolbar" },
738{ "Stretched TB","Rétrécir TB" }, 754{ "Stretched TB","Rétrécir TB" },
739{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Le fichier d'import \n...%1\nn'existe pas!\nAucun import!\n" }, 755{ "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Le fichier d'import \n...%1\nn'existe pas!\nAucun import!\n" },
740{ "Import filename(*.ics/*.vcs)","Fichier d'Import(*.ics/*.vcs)" }, 756{ "Import filename(*.ics/*.vcs)","Fichier d'Import(*.ics/*.vcs)" },
741{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","En cas de double import\nles objets en double seront ignorés!\nVous pouvez créer une sauvegarde avec\nFichier - Créér une sauvegarde\npour annuler l'importation.\n" }, 757{ "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","En cas de double import\nles objets en double seront ignorés!\nVous pouvez créer une sauvegarde avec\nFichier - Créér une sauvegarde\npour annuler l'importation.\n" },
742{ "Not supported \non desktop!\n","Uniquement sur le PDA!" }, 758{ "Not supported \non desktop!\n","Uniquement sur le PDA!" },
743{ "Imported file successfully","Fichier importé avec succes" }, 759{ "Imported file successfully","Fichier importé avec succes" },
744{ "Error importing file","Erreur lors de l'import du fichier" }, 760{ "Error importing file","Erreur lors de l'import du fichier" },
745{ "Export vcal filename(*.vcs)","Export vcal (*.vcs)" }, 761{ "Export vcal filename(*.vcs)","Export vcal (*.vcs)" },
746{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Enregistrement\fichier déja existant\n fichier du:\n%1\n Ecraser?\n" }, 762{ "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Enregistrement\fichier déja existant\n fichier du:\n%1\n Ecraser?\n" },
747{ "Overwrite!","Ecraser!" }, 763{ "Overwrite!","Ecraser!" },
748{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import du fichier \n...%1\ndu:\n%2\nLes doublons\nne seront pas importés!\n" }, 764{ "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import du fichier \n...%1\ndu:\n%2\nLes doublons\nne seront pas importés!\n" },
749{ "Load backup filename","Charger une sauvegarde" }, 765{ "Load backup filename","Charger une sauvegarde" },
750{ "Backup file\ndoes not exist!\nNothing loaded!","Le fichier de sauvegarde\nn'existe pas...\nAucun chargement!" }, 766{ "Backup file\ndoes not exist!\nNothing loaded!","Le fichier de sauvegarde\nn'existe pas...\nAucun chargement!" },
751{ "KO/Pi:Loaded %1","KO/Pi: %1 Chargé" }, 767{ "KO/Pi:Loaded %1","KO/Pi: %1 Chargé" },
752{ "Save backup filename","enregistrer le nom de svgde" }, 768{ "Save backup filename","enregistrer le nom de svgde" },
753{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Sauvegarder fichier\nLe fichier existe!\nEffacer les données de:\n%1 ?\n" }, 769{ "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Sauvegarder fichier\nLe fichier existe!\nEffacer les données de:\n%1 ?\n" },
754{ "KO/Pi:Saved %1","KO/Pi: %1 enregistré" }, 770{ "KO/Pi:Saved %1","KO/Pi: %1 enregistré" },
755{ "Details of attendee","Liste des participants" }, 771{ "Details of attendee","Liste des participants" },
756{ "Work phone:\n","Telephone Travail:\n" }, 772{ "Work phone:\n","Telephone Travail:\n" },
757{ "Work mobile phone:\n","Portable travail:\n" }, 773{ "Work mobile phone:\n","Portable travail:\n" },
758{ "Home phone:\n","Telephoneon privé:\n" }, 774{ "Home phone:\n","Telephoneon privé:\n" },
759{ "Mobile home phone:\n","Portable privé:\n" }, 775{ "Mobile home phone:\n","Portable privé:\n" },
760{ "Email:\n","Email:\n" }, 776{ "Email:\n","Email:\n" },
761{ "Alarm disabled","Sonnerie désactivée" }, 777{ "Alarm disabled","Sonnerie désactivée" },
762{ "Audio.Al.: ","Al.sonore: " }, 778{ "Audio.Al.: ","Al.sonore: " },
763{ "Proc.Al.: ","Proc.Al.: " }, 779{ "Proc.Al.: ","Proc.Al.: " },
764{ "No sound set","Pas de son" }, 780{ "No sound set","Pas de son" },
765{ "*.wav|Wav Files","fichiers *.wav|Wav" }, 781{ "*.wav|Wav Files","fichiers *.wav|Wav" },
766{ "No program set","Aucun programme" }, 782{ "No program set","Aucun programme" },
767{ "Running '%1'","Lancer '%1'" }, 783{ "Running '%1'","Lancer '%1'" },
768{ "Playing '%1'","Jouer '%1'" }, 784{ "Playing '%1'","Jouer '%1'" },
769{ "Show Sync Events in WN/Agenda view","Voir les even. synchro dans la vue WN/Agenda" }, 785{ "Show Sync Events in WN/Agenda view","Voir les even. synchro dans la vue WN/Agenda" },
770{ "User defined (usertranslation.txt)","Personnalisé (usertranslation.txt)" }, 786{ "User defined (usertranslation.txt)","Personnalisé (usertranslation.txt)" },
771{ "Load!","Laden!" }, 787{ "Load!","Laden!" },
772{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Sauvegarde du:\n%1\nLe chargement va \nécraser les données actuelles!\n" }, 788{ "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Sauvegarde du:\n%1\nLe chargement va \nécraser les données actuelles!\n" },
773{ "KO/Pi Features and hints","KO/Pi fonctionnalités et astuces" }, 789{ "KO/Pi Features and hints","KO/Pi fonctionnalités et astuces" },
774{ "KO/Pi User translation HowTo","KO/Pi création d'une traduction personnalisée" }, 790{ "KO/Pi User translation HowTo","KO/Pi création d'une traduction personnalisée" },
775{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, 791{ "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" },
776{ "Features + hints...","Caractéristiques + Trucs..." }, 792{ "Features + hints...","Caractéristiques + Trucs..." },
777{ "User translation...","Traduction personnalisée..." }, 793{ "User translation...","Traduction personnalisée..." },
778{ "Sync HowTo...","Synchronisation Mode d'emploi..." }, 794{ "Sync HowTo...","Synchronisation Mode d'emploi..." },
779{ "Anniversary","Anniversaire" }, 795{ "Anniversary","Anniversaire" },
780{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Lors d'un import d'anniversaire en double \nles événnements dupliqués seront ignorés \nà condition qu'il n'y ait pas eu \nde changement dans KO/Pi.\n" }, 796{ "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Lors d'un import d'anniversaire en double \nles événnements dupliqués seront ignorés \nà condition qu'il n'y ait pas eu \nde changement dans KO/Pi.\n" },
781{ "Next recurrence is on: ","Prochaine répétition est:" }, 797{ "Next recurrence is on: ","Prochaine répétition est:" },
782{ "<b>Alarm on: </b>","<b>Alarme activée: </b>" }, 798{ "<b>Alarm on: </b>","<b>Alarme activée: </b>" },
783{ "<b>Access: </b>","<b>Accès: </b>" }, 799{ "<b>Access: </b>","<b>Accès: </b>" },
784{ "(%1 min before)","(%1 min avant)" }, 800{ "(%1 min before)","(%1 min avant)" },
785{ "<b>Categories: </b>","<b>Catégories: </b>" }, 801{ "<b>Categories: </b>","<b>Catégories: </b>" },
786{ "Save Journal/Description...","Sauver Journal/Détails..." }, 802{ "Save Journal/Description...","Sauver Journal/Détails..." },
787{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Ceci sauve le texte et détails\ndes Journaux/Tâches et Evénements choisis,\ndans un fichier texte." }, 803{ "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Ceci sauve le texte et détails\ndes Journaux/Tâches et Evénements choisis,\ndans un fichier texte." },
788{ "Continue","Continuer" }, 804{ "Continue","Continuer" },
789{ " birthdays/anniversaries added!"," Jours de naissance/anniversaires ajoutés!" }, 805{ " birthdays/anniversaries added!"," Jours de naissance/anniversaires ajoutés!" },
790{ "Attendee:","Participant:" }, 806{ "Attendee:","Participant:" },
791{ "Click OK to search ->","Pour chercher, cliquer sur OK ->" }, 807{ "Click OK to search ->","Pour chercher, cliquer sur OK ->" },
792{ "On day ","Le jour " }, 808{ "On day ","Le jour " },
793{ "%1 of ","%1 du mois" }, 809{ "%1 of ","%1 du mois" },
794{ "%1 of the year","%1 de l'année" }, 810{ "%1 of the year","%1 de l'année" },
795{ "Filter","Filtre" }, 811{ "Filter","Filtre" },
796{ "Turn filter on","Filtre activé" }, 812{ "Turn filter on","Filtre activé" },
797{ "Turn filter off","Filtre désactivé" }, 813{ "Turn filter off","Filtre désactivé" },
798{ "Enable Pi-Sync","Activer Pi-Sync" }, 814{ "Enable Pi-Sync","Activer Pi-Sync" },
799{ "Export to phone","Exporter vers GSM" }, 815{ "Export to phone","Exporter vers GSM" },
800{ "Please read Help-Sync Howto\nto know what settings to use.","Merci de lire l'aide: "Sync Howto"\npour voir quels réglages utiliser." }, 816{ "Please read Help-Sync Howto\nto know what settings to use.","Merci de lire l'aide: "Sync Howto"\npour voir quels réglages utiliser." },
801{ "I/O device: ","I/O device: " }, 817{ "I/O device: ","I/O device: " },
802{ "Connection: ","Connection: " }, 818{ "Connection: ","Connection: " },
803{ "Model(opt.): ","Modèle(opt.): " }, 819{ "Model(opt.): ","Modèle(opt.): " },
804{ "Write back events in future only","Ré-écrire les événements futurs seulement" }, 820{ "Write back events in future only","Ré-écrire les événements futurs seulement" },
805{ "Max. weeks in future: ","Max. de semaines dans le futur: " }, 821{ "Max. weeks in future: ","Max. de semaines dans le futur: " },
806{ "NOTE: This will remove all old\ntodo/calendar data on phone!","Attention: cela va effacer toutes les\nanciennes Tâches/Dates du calendrier du GSM!" }, 822{ "NOTE: This will remove all old\ntodo/calendar data on phone!","Attention: cela va effacer toutes les\nanciennes Tâches/Dates du calendrier du GSM!" },
807{ "Export to mobile phone!","Exporter vers le GSM!" }, 823{ "Export to mobile phone!","Exporter vers le GSM!" },
808{ "Export complete calendar","Exporter le calendrier complet" }, 824{ "Export complete calendar","Exporter le calendrier complet" },
809{ "Writing to phone...","Ecriture sur le GSM..." }, 825{ "Writing to phone...","Ecriture sur le GSM..." },
810{ " This may take 1-3 minutes!","1-3 Minutes de patience!" }, 826{ " This may take 1-3 minutes!","1-3 Minutes de patience!" },
811{ "Retry","Essayer à nouveau" }, 827{ "Retry","Essayer à nouveau" },
812{ "KDE/Pim phone access","KDE/Pim contacte le GSM" }, 828{ "KDE/Pim phone access","KDE/Pim contacte le GSM" },
813{ "Error accessing device!\nPlease turn on connection\nand retry!","Erreur d'accès au périphérique!\nMerci d'activer la connection\net essayer à nouveau!" }, 829{ "Error accessing device!\nPlease turn on connection\nand retry!","Erreur d'accès au périphérique!\nMerci d'activer la connection\net essayer à nouveau!" },
814{ "Error exporting to phone!","Erreur d'exportation vers le GSM!" }, 830{ "Error exporting to phone!","Erreur d'exportation vers le GSM!" },
815{ "Export filtered calendar","Exporter le calendrier filtré" }, 831{ "Export filtered calendar","Exporter le calendrier filtré" },
816{ "Complete calendar...","Calendrier complet..." }, 832{ "Complete calendar...","Calendrier complet..." },
817{ "Filtered calendar...","Calendrier filtré..." }, 833{ "Filtered calendar...","Calendrier filtré..." },
818{ "Beam complete calendar...","Export calendrier complet via IR" }, 834{ "Beam complete calendar...","Export calendrier complet via IR" },
819{ "Beam filtered calendar...","Export calendrier filtré via IR" }, 835{ "Beam filtered calendar...","Export calendrier filtré via IR" },
820{ "-- Write back (on remote) existing entries only","-- Ecrire en retour (sur source distante) uniquement les entrées existantes" }, 836{ "-- Write back (on remote) existing entries only","-- Ecrire en retour (sur source distante) uniquement les entrées existantes" },
821{ "-- Write back (calendar) entries in future only","-- Ecrire en retour, uniquement des entrées futures" }, 837{ "-- Write back (calendar) entries in future only","-- Ecrire en retour, uniquement des entrées futures" },
822{ "---- Max. weeks in future: ","---- Max. de semaines dans le futur: " }, 838{ "---- Max. weeks in future: ","---- Max. de semaines dans le futur: " },
823{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direct Kx/Pi vers Kx/Pi sync )" }, 839{ "Pi-Sync ( direct Kx/Pi to Kx/Pi sync )","Pi-Sync ( direct Kx/Pi vers Kx/Pi sync )" },
824{ "Mobile device (cell phone)","Mobile (GSM)" }, 840{ "Mobile device (cell phone)","Mobile (GSM)" },
825{ "Include in multiple ","Inclus dans Synchro. Multiple " }, 841{ "Include in multiple ","Inclus dans Synchro. Multiple " },
826{ "Unselect","Supprimer" }, 842{ "Unselect","Supprimer" },
827{ "Selected","Sélectionné" }, 843{ "Selected","Sélectionné" },
828{ "Beam receive enabled","Réception IR activée" }, 844{ "Beam receive enabled","Réception IR activée" },
829{ "External Apps.","Prog. externes" }, 845{ "External Apps.","Prog. externes" },
846{ "Allday:","Journée :" },
847{ "ToDo:","Tâche : " },
848{ "Remove sync info","Supprimer infos. synchro." },
849{ "For all profiles","Pour tous les profils" },
850{ "Okay!","OK" }
830{ "","" }, 851{ "","" },
831{ "","" }, 852{ "","" },
832{ "","" }, 853{ "","" },
833{ "","" }, 854{ "","" },
834{ "","" }, 855{ "","" },
835{ "","" }, 856{ "","" },
836{ "","" }, 857{ "","" },
837{ "","" }, 858{ "","" },
838 859
diff --git a/kmicromail/composemail.cpp b/kmicromail/composemail.cpp
index 49fd14f..976e309 100644
--- a/kmicromail/composemail.cpp
+++ b/kmicromail/composemail.cpp
@@ -1,515 +1,519 @@
1// CHANGED 2004-08-06 Lutz Rogowski 1// CHANGED 2004-08-06 Lutz Rogowski
2 2
3 3
4#ifdef DESKTOP_VERSION 4#ifdef DESKTOP_VERSION
5#include <qapplication.h> 5#include <qapplication.h>
6#include <kabc/addresseedialog.h> 6#include <kabc/addresseedialog.h>
7#include <kabc/stdaddressbook.h> 7#include <kabc/stdaddressbook.h>
8#include <kabc/addressee.h> 8#include <kabc/addressee.h>
9#else
10#include <qpe/qpeapplication.h>
9#endif //DESKTOP_VERSION 11#endif //DESKTOP_VERSION
10#include <libkdepim/externalapphandler.h> 12#include <libkdepim/externalapphandler.h>
11 13
12#include "koprefs.h" 14#include "koprefs.h"
15#include <klocale.h>
16#include <kglobal.h>
13 17
14#ifdef MINIKDE_KDIALOG_H 18#ifdef MINIKDE_KDIALOG_H
15#undef MINIKDE_KDIALOG_H 19#undef MINIKDE_KDIALOG_H
16#endif 20#endif
17 21
18 22
19#include "composemail.h" 23#include "composemail.h"
20 24
21#include <libmailwrapper/smtpwrapper.h> 25#include <libmailwrapper/smtpwrapper.h>
22#include <libmailwrapper/storemail.h> 26#include <libmailwrapper/storemail.h>
23#include <libmailwrapper/abstractmail.h> 27#include <libmailwrapper/abstractmail.h>
24#include <libmailwrapper/mailtypes.h> 28#include <libmailwrapper/mailtypes.h>
25 29
26/* OPIE */ 30/* OPIE */
27//#include <opie2/ofiledialog.h> 31//#include <opie2/ofiledialog.h>
28//#include <opie2/odebug.h> 32//#include <opie2/odebug.h>
29#include <kfiledialog.h> 33#include <kfiledialog.h>
30//#include <qpe/resource.h> 34//#include <qpe/resource.h>
31#include <qpe/global.h> 35#include <qpe/global.h>
32//#include <qpe/contact.h> 36//#include <qpe/contact.h>
33 37
34 38
35#include <qcombobox.h> 39#include <qcombobox.h>
36#include <qcheckbox.h> 40#include <qcheckbox.h>
37#include <qiconset.h> 41#include <qiconset.h>
38#include <qtimer.h> 42#include <qtimer.h>
39#include <qmessagebox.h> 43#include <qmessagebox.h>
40#include <qpushbutton.h> 44#include <qpushbutton.h>
41#include <qmultilineedit.h> 45#include <qmultilineedit.h>
42#include <qlabel.h> 46#include <qlabel.h>
43#include <qtabwidget.h> 47#include <qtabwidget.h>
44#include <qlistview.h> 48#include <qlistview.h>
45 49
46//using namespace Opie::Core; 50//using namespace Opie::Core;
47//using namespace Opie::Ui; 51//using namespace Opie::Ui;
48ComposeMail::ComposeMail( Settings *sett, QWidget *parent, const char *name, bool modal ) 52ComposeMail::ComposeMail( Settings *sett, QWidget *parent, const char *name, bool modal )
49 : ComposeMailUI( parent, name, modal ) 53 : ComposeMailUI( parent, name, modal )
50{ 54{
51 55
52 mPickLineEdit = 0; 56 mPickLineEdit = 0;
53 mEncoding = KOPrefs::instance()->mCurrentCodeName; 57 mEncoding = KOPrefs::instance()->mCurrentCodeName;
54 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), 58 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)),
55 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); 59 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&)));
56 settings = sett; 60 settings = sett;
57 m_replyid = ""; 61 m_replyid = "";
58 if ( KOPrefs::instance()->mUseKapi) { 62 if ( KOPrefs::instance()->mUseKapi) {
59 KConfig config( locateLocal("config", "kabcrc") ); 63 KConfig config( locateLocal("config", "kabcrc") );
60 config.setGroup( "General" ); 64 config.setGroup( "General" );
61 QString whoami_uid = config.readEntry( "WhoAmI" ); 65 QString whoami_uid = config.readEntry( "WhoAmI" );
62 66
63 if ( whoami_uid.isEmpty() ) { 67 if ( whoami_uid.isEmpty() ) {
64 QMessageBox::information( 0, i18n( "Hint" ), 68 QMessageBox::information( 0, i18n( "Hint" ),
65 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 69 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
66 i18n( "Ok" ) ); 70 i18n( "Ok" ) );
67 71
68 72
69 fillSettings(); 73 fillSettings();
70 } else 74 } else
71 ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid); 75 ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid);
72 76
73 77
74#ifdef DESKTOP_VERSION 78#ifdef DESKTOP_VERSION
75 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( ); 79 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( );
76 QStringList mails = con.emails(); 80 QStringList mails = con.emails();
77 QString defmail = con.preferredEmail(); 81 QString defmail = con.preferredEmail();
78 if ( mails.count() == 0) 82 if ( mails.count() == 0)
79 QMessageBox::information( 0, i18n( "Hint" ), 83 QMessageBox::information( 0, i18n( "Hint" ),
80 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 84 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
81 i18n( "Ok" ) ); 85 i18n( "Ok" ) );
82 if (defmail.length()!=0) { 86 if (defmail.length()!=0) {
83 fromBox->insertItem(defmail); 87 fromBox->insertItem(defmail);
84 } 88 }
85 QStringList::ConstIterator sit = mails.begin(); 89 QStringList::ConstIterator sit = mails.begin();
86 for (;sit!=mails.end();++sit) { 90 for (;sit!=mails.end();++sit) {
87 if ( (*sit)==defmail) 91 if ( (*sit)==defmail)
88 continue; 92 continue;
89 fromBox->insertItem((*sit)); 93 fromBox->insertItem((*sit));
90 } 94 }
91 senderNameEdit->setText(con.formattedName()); 95 senderNameEdit->setText(con.formattedName());
92#endif 96#endif
93 97
94 } else { 98 } else {
95 fillSettings(); 99 fillSettings();
96 } 100 }
97 checkBoxLater->setChecked( KOPrefs::instance()->mSendLater ); 101 checkBoxLater->setChecked( KOPrefs::instance()->mSendLater );
98 102
99 attList->addColumn( i18n( "Name" ) ); 103 attList->addColumn( i18n( "Name" ) );
100 attList->addColumn( i18n( "Size" ) ); 104 attList->addColumn( i18n( "Size" ) );
101 QList<Account> accounts = settings->getAccounts(); 105 QList<Account> accounts = settings->getAccounts();
102 106
103 if ( QApplication::desktop()->width() < 320 ) 107 if ( QApplication::desktop()->width() < 320 )
104 smtpAccountBox->setMaximumWidth( 80 ); 108 smtpAccountBox->setMaximumWidth( 80 );
105 Account *it; 109 Account *it;
106 for ( it = accounts.first(); it; it = accounts.next() ) { 110 for ( it = accounts.first(); it; it = accounts.next() ) {
107 if ( it->getType()==MAILLIB::A_SMTP ) { 111 if ( it->getType()==MAILLIB::A_SMTP ) {
108 SMTPaccount *smtp = static_cast<SMTPaccount *>(it); 112 SMTPaccount *smtp = static_cast<SMTPaccount *>(it);
109 smtpAccountBox->insertItem( smtp->getAccountName() ); 113 smtpAccountBox->insertItem( smtp->getAccountName() );
110 smtpAccounts.append( smtp ); 114 smtpAccounts.append( smtp );
111 } 115 }
112 } 116 }
113 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) ); 117 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) );
114 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) ); 118 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) );
115 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) ); 119 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) );
116 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) ); 120 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) );
117 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) ); 121 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) );
118 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) ); 122 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) );
119 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) ); 123 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) );
120 mMail = 0; 124 mMail = 0;
121 warnAttach = true; 125 warnAttach = true;
122 QIconSet icon; 126 QIconSet icon;
123 //icon = SmallIcon("fileexport"); 127 //icon = SmallIcon("fileexport");
124 icon = SmallIcon("filesave"); 128 icon = SmallIcon("filesave");
125 SaveButton->setIconSet (icon ) ; 129 SaveButton->setIconSet (icon ) ;
126 if ( QApplication::desktop()->width() < 320 ) { 130 if ( QApplication::desktop()->width() < 320 ) {
127 SaveButton->setText ("") ; 131 SaveButton->setText ("") ;
128 SaveButton->setMaximumSize ( SaveButton->sizeHint().height(),SaveButton->sizeHint().height()) ; 132 SaveButton->setMaximumSize ( SaveButton->sizeHint().height(),SaveButton->sizeHint().height()) ;
129 } 133 }
130 else 134 else
131 SaveButton->setText (i18n("Save")); 135 SaveButton->setText (i18n("Save"));
132#ifndef DESKTOP_VERSION 136#ifndef DESKTOP_VERSION
133 QPEApplication::setStylusOperation( message, QPEApplication::RightOnHold ); 137 QPEApplication::setStylusOperation( message, QPEApplication::RightOnHold );
134 QPEApplication::setStylusOperation( senderNameEdit, QPEApplication::RightOnHold ); 138 QPEApplication::setStylusOperation( senderNameEdit, QPEApplication::RightOnHold );
135 QPEApplication::setStylusOperation( subjectLine, QPEApplication::RightOnHold ); 139 QPEApplication::setStylusOperation( subjectLine, QPEApplication::RightOnHold );
136#endif 140#endif
137 message->setFont ( KOPrefs::instance()->mComposeFont ); 141 message->setFont ( KOPrefs::instance()->mComposeFont );
138 message->setWordWrap (QMultiLineEdit::WidgetWidth); 142 message->setWordWrap (QMultiLineEdit::WidgetWidth);
139 if ( smtpAccounts.count() > 0 ) { 143 if ( smtpAccounts.count() > 0 ) {
140 fillValues( smtpAccountBox->currentItem() ); 144 fillValues( smtpAccountBox->currentItem() );
141 } else { 145 } else {
142 QMessageBox::information( 0, i18n( "Problem" ), 146 QMessageBox::information( 0, i18n( "Problem" ),
143 i18n( "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n" ), 147 i18n( "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n" ),
144 i18n( "Ok" ) ); 148 i18n( "Ok" ) );
145 return; 149 return;
146 } 150 }
147 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) ); 151 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) );
148 152
149 153
150} 154}
151 155
152void ComposeMail::fillSettings() 156void ComposeMail::fillSettings()
153{ 157{
154 if ( QApplication::desktop()->width() < 320 ) 158 if ( QApplication::desktop()->width() < 320 )
155 fromBox->setMaximumWidth( 100 ); 159 fromBox->setMaximumWidth( 100 );
156 QStringList mailList = QStringList::split(";",KOPrefs::instance()->mEmail); 160 QStringList mailList = QStringList::split(";",KOPrefs::instance()->mEmail);
157 QStringList::ConstIterator sit = mailList.begin(); 161 QStringList::ConstIterator sit = mailList.begin();
158 int pref = 0; 162 int pref = 0;
159 for (;sit!=mailList.end();++sit) { 163 for (;sit!=mailList.end();++sit) {
160 fromBox->insertItem((*sit)); 164 fromBox->insertItem((*sit));
161 } 165 }
162 senderNameEdit->setText(KOPrefs::instance()->mName); 166 senderNameEdit->setText(KOPrefs::instance()->mName);
163} 167}
164 168
165 169
166void ComposeMail::saveAsDraft() 170void ComposeMail::saveAsDraft()
167{ 171{
168 172
169 Opie::Core::OSmartPointer<Mail> mail= new Mail(); 173 Opie::Core::OSmartPointer<Mail> mail= new Mail();
170 mail->setMail(fromBox->currentText()); 174 mail->setMail(fromBox->currentText());
171 mail->setTo( toLine->text() ); 175 mail->setTo( toLine->text() );
172 mail->setName(senderNameEdit->text()); 176 mail->setName(senderNameEdit->text());
173 mail->setCC( ccLine->text() ); 177 mail->setCC( ccLine->text() );
174 mail->setBCC( bccLine->text() ); 178 mail->setBCC( bccLine->text() );
175 mail->setReply( replyLine->text() ); 179 mail->setReply( replyLine->text() );
176 mail->setSubject( subjectLine->text() ); 180 mail->setSubject( subjectLine->text() );
177 if (!m_replyid.isEmpty()) { 181 if (!m_replyid.isEmpty()) {
178 QStringList ids; 182 QStringList ids;
179 ids.append(m_replyid); 183 ids.append(m_replyid);
180 mail->setInreply(ids); 184 mail->setInreply(ids);
181 } 185 }
182 QString txt = message->text(); 186 QString txt = message->text();
183 if ( !sigMultiLine->text().isEmpty() ) { 187 if ( !sigMultiLine->text().isEmpty() ) {
184 txt.append( "\n--\n" ); 188 txt.append( "\n--\n" );
185 txt.append( sigMultiLine->text() ); 189 txt.append( sigMultiLine->text() );
186 } 190 }
187 mail->setMessage( txt ); 191 mail->setMessage( txt );
188 mail->setCharset (mEncoding); 192 mail->setCharset (mEncoding);
189 /* only use the default drafts folder name! */ 193 /* only use the default drafts folder name! */
190 Storemail wrapper(AbstractMail::draftFolder()); 194 Storemail wrapper(AbstractMail::draftFolder());
191 wrapper.storeMail(mail); 195 wrapper.storeMail(mail);
192 196
193 AttachViewItem *it = (AttachViewItem *) attList->firstChild(); 197 AttachViewItem *it = (AttachViewItem *) attList->firstChild();
194 /* attachments we will ignore! */ 198 /* attachments we will ignore! */
195 if ( it != 0 ) { 199 if ( it != 0 ) {
196 if ( warnAttach ) 200 if ( warnAttach )
197 QMessageBox::warning(0,i18n("Store message"), 201 QMessageBox::warning(0,i18n("Store message"),
198 i18n("<center>Attachments will not be stored in \"Draft\" folder</center>")); 202 i18n("<center>Attachments will not be stored in \"Draft\" folder</center>"));
199 warnAttach = false; 203 warnAttach = false;
200 } 204 }
201 setStatus( i18n("Mail saved as draft!") ); 205 setStatus( i18n("Mail saved as draft!") );
202} 206}
203void ComposeMail::clearStatus() 207void ComposeMail::clearStatus()
204{ 208{
205 topLevelWidget()->setCaption( i18n("Compose mail") ); 209 topLevelWidget()->setCaption( i18n("Compose mail") );
206} 210}
207void ComposeMail::setStatus( QString status ) 211void ComposeMail::setStatus( QString status )
208{ 212{
209 topLevelWidget()->setCaption( status ); 213 topLevelWidget()->setCaption( status );
210 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ; 214 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ;
211} 215}
212void ComposeMail::pickAddress( ) 216void ComposeMail::pickAddress( )
213{ 217{
214 218
215 QLineEdit *line = mPickLineEdit; 219 QLineEdit *line = mPickLineEdit;
216 if ( line == 0 ) 220 if ( line == 0 )
217 return; 221 return;
218#ifdef DESKTOP_VERSION 222#ifdef DESKTOP_VERSION
219 //qDebug(" ComposeMail::pickAddress "); 223 //qDebug(" ComposeMail::pickAddress ");
220 QString names ;//= AddressPicker::getNames(); 224 QString names ;//= AddressPicker::getNames();
221 225
222 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 226 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
223 uint i=0; 227 uint i=0;
224 for (i=0; i < list.count(); i++) { 228 for (i=0; i < list.count(); i++) {
225 if ( !list[i].preferredEmail().isEmpty()) { 229 if ( !list[i].preferredEmail().isEmpty()) {
226 if ( ! names.isEmpty() ) 230 if ( ! names.isEmpty() )
227 names+= ","; 231 names+= ",";
228 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">"; 232 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">";
229 233
230 } 234 }
231 } 235 }
232 236
233 237
234 if ( line->text().isEmpty() ) { 238 if ( line->text().isEmpty() ) {
235 line->setText( names ); 239 line->setText( names );
236 } else if ( !names.isEmpty() ) { 240 } else if ( !names.isEmpty() ) {
237 line->setText( line->text() + ", " + names ); 241 line->setText( line->text() + ", " + names );
238 } 242 }
239#else 243#else
240 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/ompi", this->name() /* name is here the unique uid*/); 244 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/ompi", this->name() /* name is here the unique uid*/);
241 // the result should now arrive through method insertAttendees 245 // the result should now arrive through method insertAttendees
242#endif 246#endif
243} 247}
244//the map includes name/email pairs, that comes from Ka/Pi 248//the map includes name/email pairs, that comes from Ka/Pi
245void ComposeMail::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList) 249void ComposeMail::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList)
246{ 250{
247 //qDebug("ComposeMail::insertAttendees "); 251 //qDebug("ComposeMail::insertAttendees ");
248 raise(); 252 raise();
249 253
250 if ( mPickLineEdit == 0 ) { //whoami received 254 if ( mPickLineEdit == 0 ) { //whoami received
251 QString defmail = uidList[0]; 255 QString defmail = uidList[0];
252 if ( emailList.count() == 0 ) 256 if ( emailList.count() == 0 )
253 QMessageBox::information( 0, i18n( "Hint" ), 257 QMessageBox::information( 0, i18n( "Hint" ),
254 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 258 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
255 i18n( "Ok" ) ); 259 i18n( "Ok" ) );
256 if (defmail.length()!=0) { 260 if (defmail.length()!=0) {
257 fromBox->insertItem(defmail); 261 fromBox->insertItem(defmail);
258 } 262 }
259 QStringList::ConstIterator sit = emailList.begin(); 263 QStringList::ConstIterator sit = emailList.begin();
260 int pref = 0; 264 int pref = 0;
261 for (;sit!=emailList.end();++sit) { 265 for (;sit!=emailList.end();++sit) {
262 if ( (*sit)==defmail) 266 if ( (*sit)==defmail)
263 continue; 267 continue;
264 fromBox->insertItem((*sit)); 268 fromBox->insertItem((*sit));
265 } 269 }
266 senderNameEdit->setText(nameList[0]); 270 senderNameEdit->setText(nameList[0]);
267 return; 271 return;
268 } 272 }
269 QString names ; 273 QString names ;
270 QLineEdit *line = mPickLineEdit; 274 QLineEdit *line = mPickLineEdit;
271 if (uid == this->name()) 275 if (uid == this->name())
272 { 276 {
273 for ( int i = 0; i < nameList.count(); i++) 277 for ( int i = 0; i < nameList.count(); i++)
274 { 278 {
275 QString _name = nameList[i]; 279 QString _name = nameList[i];
276 QString _email = emailList[i]; 280 QString _email = emailList[i];
277 QString _uid = uidList[i]; 281 QString _uid = uidList[i];
278 if ( ! _email.isEmpty() ) { 282 if ( ! _email.isEmpty() ) {
279 if ( ! names.isEmpty() ) 283 if ( ! names.isEmpty() )
280 names+= ","; 284 names+= ",";
281 names+= "\""+_name +"\"<" +_email +">"; 285 names+= "\""+_name +"\"<" +_email +">";
282 } 286 }
283 } 287 }
284 } 288 }
285 if ( line->text().isEmpty() ) { 289 if ( line->text().isEmpty() ) {
286 line->setText( names ); 290 line->setText( names );
287 } else if ( !names.isEmpty() ) { 291 } else if ( !names.isEmpty() ) {
288 line->setText( line->text() + ", " + names ); 292 line->setText( line->text() + ", " + names );
289 } 293 }
290} 294}
291 295
292void ComposeMail::setTo( const QString & to ) 296void ComposeMail::setTo( const QString & to )
293{ 297{
294 toLine->setText( to ); 298 toLine->setText( to );
295} 299}
296 300
297void ComposeMail::setSubject( const QString & subject ) 301void ComposeMail::setSubject( const QString & subject )
298{ 302{
299 subjectLine->setText( subject ); 303 subjectLine->setText( subject );
300} 304}
301 305
302void ComposeMail::setInReplyTo( const QString & messageId ) 306void ComposeMail::setInReplyTo( const QString & messageId )
303{ 307{
304 m_replyid = messageId; 308 m_replyid = messageId;
305} 309}
306 310
307void ComposeMail::setMessage( const QString & text ) 311void ComposeMail::setMessage( const QString & text )
308{ 312{
309 message->setText( text ); 313 message->setText( text );
310} 314}
311 315
312 316
313void ComposeMail::pickAddressTo() 317void ComposeMail::pickAddressTo()
314{ 318{
315 mPickLineEdit = toLine; 319 mPickLineEdit = toLine;
316 pickAddress( ); 320 pickAddress( );
317} 321}
318 322
319void ComposeMail::pickAddressCC() 323void ComposeMail::pickAddressCC()
320{ 324{
321 mPickLineEdit = ccLine; 325 mPickLineEdit = ccLine;
322 pickAddress( ); 326 pickAddress( );
323} 327}
324 328
325void ComposeMail::pickAddressBCC() 329void ComposeMail::pickAddressBCC()
326{ 330{
327 mPickLineEdit = bccLine; 331 mPickLineEdit = bccLine;
328 pickAddress( ); 332 pickAddress( );
329} 333}
330 334
331void ComposeMail::pickAddressReply() 335void ComposeMail::pickAddressReply()
332{ 336{
333 mPickLineEdit = replyLine; 337 mPickLineEdit = replyLine;
334 pickAddress( ); 338 pickAddress( );
335} 339}
336 340
337void ComposeMail::fillValues( int ) 341void ComposeMail::fillValues( int )
338{ 342{
339#if 0 343#if 0
340 SMTPaccount *smtp = smtpAccounts.at( current ); 344 SMTPaccount *smtp = smtpAccounts.at( current );
341 ccLine->clear(); 345 ccLine->clear();
342 if ( smtp->getUseCC() ) { 346 if ( smtp->getUseCC() ) {
343 ccLine->setText( smtp->getCC() ); 347 ccLine->setText( smtp->getCC() );
344 } 348 }
345 bccLine->clear(); 349 bccLine->clear();
346 if ( smtp->getUseBCC() ) { 350 if ( smtp->getUseBCC() ) {
347 bccLine->setText( smtp->getBCC() ); 351 bccLine->setText( smtp->getBCC() );
348 } 352 }
349 replyLine->clear(); 353 replyLine->clear();
350 if ( smtp->getUseReply() ) { 354 if ( smtp->getUseReply() ) {
351 replyLine->setText( smtp->getReply() ); 355 replyLine->setText( smtp->getReply() );
352 } 356 }
353 sigMultiLine->setText( smtp->getSignature() ); 357 sigMultiLine->setText( smtp->getSignature() );
354#endif 358#endif
355} 359}
356 360
357void ComposeMail::slotAdjustColumns() 361void ComposeMail::slotAdjustColumns()
358{ 362{
359 int currPage = tabWidget->currentPageIndex(); 363 int currPage = tabWidget->currentPageIndex();
360 364
361 tabWidget->showPage( attachTab ); 365 tabWidget->showPage( attachTab );
362 attList->setColumnWidth( 0, attList->visibleWidth() - 80 ); 366 attList->setColumnWidth( 0, attList->visibleWidth() - 80 );
363 attList->setColumnWidth( 1, 80 ); 367 attList->setColumnWidth( 1, 80 );
364 368
365 tabWidget->setCurrentPage( currPage ); 369 tabWidget->setCurrentPage( currPage );
366} 370}
367 371
368void ComposeMail::addAttachment() 372void ComposeMail::addAttachment()
369{ 373{
370 QString lnk = KFileDialog::getOpenFileName( "", "Add Attachment", this ); 374 QString lnk = KFileDialog::getOpenFileName( "", "Add Attachment", this );
371 if ( !lnk.isEmpty() ) { 375 if ( !lnk.isEmpty() ) {
372 Attachment *att = new Attachment( lnk ); 376 Attachment *att = new Attachment( lnk );
373 (void) new AttachViewItem( attList, att ); 377 (void) new AttachViewItem( attList, att );
374 } 378 }
375} 379}
376 380
377void ComposeMail::removeAttachment() 381void ComposeMail::removeAttachment()
378{ 382{
379 if ( !attList->currentItem() ) { 383 if ( !attList->currentItem() ) {
380 QMessageBox::information( this, i18n( "Error" ), 384 QMessageBox::information( this, i18n( "Error" ),
381 i18n( "<p>Please select a File.</p>" ), 385 i18n( "<p>Please select a File.</p>" ),
382 i18n( "Ok" ) ); 386 i18n( "Ok" ) );
383 } else { 387 } else {
384 attList->takeItem( attList->currentItem() ); 388 attList->takeItem( attList->currentItem() );
385 } 389 }
386} 390}
387 391
388void ComposeMail::accept() 392void ComposeMail::accept()
389{ 393{
390 if ( smtpAccountBox->count() == 0 ) { 394 if ( smtpAccountBox->count() == 0 ) {
391 395
392 reject(); 396 reject();
393 return; 397 return;
394 } 398 }
395 399
396 if (! checkBoxLater->isChecked() ) { 400 if (! checkBoxLater->isChecked() ) {
397 int yesno = QMessageBox::warning(0,i18n("Stop editing message"), 401 int yesno = QMessageBox::warning(0,i18n("Stop editing message"),
398 i18n("Send this message?"), 402 i18n("Send this message?"),
399 i18n("Yes"), 403 i18n("Yes"),
400 i18n("Cancel")); 404 i18n("Cancel"));
401 405
402 if (yesno == 1) { 406 if (yesno == 1) {
403 return; 407 return;
404 } 408 }
405 } 409 }
406#if 0 410#if 0
407 odebug << "Sending Mail with " 411 odebug << "Sending Mail with "
408 << smtpAccounts.at( smtpAccountBox->currentItem() )->getAccountName() << oendl; 412 << smtpAccounts.at( smtpAccountBox->currentItem() )->getAccountName() << oendl;
409#endif 413#endif
410 Opie::Core::OSmartPointer<Mail> mail=new Mail; 414 Opie::Core::OSmartPointer<Mail> mail=new Mail;
411 415
412 SMTPaccount *smtp = smtpAccounts.at( smtpAccountBox->currentItem() ); 416 SMTPaccount *smtp = smtpAccounts.at( smtpAccountBox->currentItem() );
413 mail->setMail(fromBox->currentText()); 417 mail->setMail(fromBox->currentText());
414 418
415 if ( !toLine->text().isEmpty() ) { 419 if ( !toLine->text().isEmpty() ) {
416 mail->setTo( toLine->text() ); 420 mail->setTo( toLine->text() );
417 } else { 421 } else {
418 QMessageBox::warning(0,i18n("Sending mail"), 422 QMessageBox::warning(0,i18n("Sending mail"),
419 i18n("No Receiver spezified" ) ); 423 i18n("No Receiver spezified" ) );
420 return; 424 return;
421 } 425 }
422 426
423 mail->setName(senderNameEdit->text()); 427 mail->setName(senderNameEdit->text());
424 mail->setCC( ccLine->text() ); 428 mail->setCC( ccLine->text() );
425 mail->setBCC( bccLine->text() ); 429 mail->setBCC( bccLine->text() );
426 mail->setReply( replyLine->text() ); 430 mail->setReply( replyLine->text() );
427 mail->setSubject( subjectLine->text() ); 431 mail->setSubject( subjectLine->text() );
428 if (!m_replyid.isEmpty()) { 432 if (!m_replyid.isEmpty()) {
429 QStringList ids; 433 QStringList ids;
430 ids.append(m_replyid); 434 ids.append(m_replyid);
431 mail->setInreply(ids); 435 mail->setInreply(ids);
432 } 436 }
433 QString txt = message->text(); 437 QString txt = message->text();
434 if ( !sigMultiLine->text().isEmpty() ) { 438 if ( !sigMultiLine->text().isEmpty() ) {
435 txt.append( "\n--\n" ); 439 txt.append( "\n--\n" );
436 txt.append( sigMultiLine->text() ); 440 txt.append( sigMultiLine->text() );
437 } 441 }
438 mail->setMessage( txt ); 442 mail->setMessage( txt );
439 mail->setCharset (mEncoding); 443 mail->setCharset (mEncoding);
440 AttachViewItem *it = (AttachViewItem *) attList->firstChild(); 444 AttachViewItem *it = (AttachViewItem *) attList->firstChild();
441 while ( it != 0 ) { 445 while ( it != 0 ) {
442 mail->addAttachment( it->getAttachment() ); 446 mail->addAttachment( it->getAttachment() );
443 it = (AttachViewItem *) it->nextSibling(); 447 it = (AttachViewItem *) it->nextSibling();
444 } 448 }
445 449
446 SMTPwrapper wrapper( smtp ); 450 SMTPwrapper wrapper( smtp );
447 if ( wrapper.sendMail( mail,checkBoxLater->isChecked() ) ) 451 if ( wrapper.sendMail( mail,checkBoxLater->isChecked() ) )
448 setStatus( tr ("Mail sent")); 452 setStatus( tr ("Mail sent"));
449 else { 453 else {
450 setStatus( tr ("Error: Something went wrong. Nothing sent")); 454 setStatus( tr ("Error: Something went wrong. Nothing sent"));
451 return; 455 return;
452 } 456 }
453 457
454 458
455 QDialog::accept(); 459 QDialog::accept();
456} 460}
457 461
458void ComposeMail::reject() 462void ComposeMail::reject()
459{ 463{
460 //qDebug("ComposeMail::reject() "); 464 //qDebug("ComposeMail::reject() ");
461 int yesno = QMessageBox::warning(0,i18n("Store message?"), 465 int yesno = QMessageBox::warning(0,i18n("Store message?"),
462 i18n("Store message into drafts?\n"), 466 i18n("Store message into drafts?\n"),
463 i18n("Yes"), 467 i18n("Yes"),
464 i18n("No")); 468 i18n("No"));
465 469
466 //qDebug("button %d ", yesno); 470 //qDebug("button %d ", yesno);
467 if (yesno == 0) { 471 if (yesno == 0) {
468 if ( toLine->text().isEmpty() ) { 472 if ( toLine->text().isEmpty() ) {
469 QMessageBox::warning(0,i18n("Sending mail"), 473 QMessageBox::warning(0,i18n("Sending mail"),
470 i18n("No Receiver spezified" ) ); 474 i18n("No Receiver spezified" ) );
471 return; 475 return;
472 } 476 }
473 saveAsDraft(); 477 saveAsDraft();
474 } 478 }
475 if (yesno == 2) { 479 if (yesno == 2) {
476 qDebug("return "); 480 qDebug("return ");
477 return; 481 return;
478 } 482 }
479 QDialog::reject(); 483 QDialog::reject();
480} 484}
481 485
482void ComposeMail::setCharset(const QString& charset) 486void ComposeMail::setCharset(const QString& charset)
483{ 487{
484 if ( !charset.isEmpty() ) 488 if ( !charset.isEmpty() )
485 mEncoding = charset; 489 mEncoding = charset;
486 qDebug("ComposeMail::setCharset %s ", mEncoding.latin1()); 490 qDebug("ComposeMail::setCharset %s ", mEncoding.latin1());
487} 491}
488ComposeMail::~ComposeMail() 492ComposeMail::~ComposeMail()
489{ 493{
490} 494}
491 495
492void ComposeMail::reEditMail(const RecMailP&current) 496void ComposeMail::reEditMail(const RecMailP&current)
493{ 497{
494 RecMailP data = current; 498 RecMailP data = current;
495 RecBodyP body = data->Wrapper()->fetchBody(current); 499 RecBodyP body = data->Wrapper()->fetchBody(current);
496 500
497 message->setText(body->Bodytext()); 501 message->setText(body->Bodytext());
498 subjectLine->setText( data->getSubject()); 502 subjectLine->setText( data->getSubject());
499 toLine->setText(data->To().join(",")); 503 toLine->setText(data->To().join(","));
500 ccLine->setText(data->CC().join(",")); 504 ccLine->setText(data->CC().join(","));
501 bccLine->setText(data->Bcc().join(",")); 505 bccLine->setText(data->Bcc().join(","));
502 replyLine->setText(data->Replyto()); 506 replyLine->setText(data->Replyto());
503 setCharset(body->getCharset()); 507 setCharset(body->getCharset());
504} 508}
505 509
506AttachViewItem::AttachViewItem( QListView *parent, Attachment *att ) 510AttachViewItem::AttachViewItem( QListView *parent, Attachment *att )
507 : QListViewItem( parent ) 511 : QListViewItem( parent )
508{ 512{
509 attachment = att; 513 attachment = att;
510 if ( !attachment->getPixmap().isNull() ) 514 if ( !attachment->getPixmap().isNull() )
511 setPixmap( 0,attachment->getPixmap() ); 515 setPixmap( 0,attachment->getPixmap() );
512 setText( 0, att->getName().isEmpty() ? att->getFileName() : att->getName() ); 516 setText( 0, att->getName().isEmpty() ? att->getFileName() : att->getName() );
513 setText( 1, QString::number( att->getSize() ) ); 517 setText( 1, QString::number( att->getSize() ) );
514} 518}
515 519
diff --git a/kmicromail/libmailwrapper/genericwrapper.cpp b/kmicromail/libmailwrapper/genericwrapper.cpp
index eac05e5..1ed9f34 100644
--- a/kmicromail/libmailwrapper/genericwrapper.cpp
+++ b/kmicromail/libmailwrapper/genericwrapper.cpp
@@ -1,546 +1,548 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#include "genericwrapper.h" 2#include "genericwrapper.h"
3#include <libetpan/libetpan.h> 3#include <libetpan/libetpan.h>
4#include "mailtypes.h" 4#include "mailtypes.h"
5 5
6#include <kconfig.h> 6#include <kconfig.h>
7#include <kglobal.h> 7#include <kglobal.h>
8#include <kstandarddirs.h> 8#include <kstandarddirs.h>
9 9
10 10
11using namespace Opie::Core; 11using namespace Opie::Core;
12Genericwrapper::Genericwrapper() 12Genericwrapper::Genericwrapper()
13 : AbstractMail() 13 : AbstractMail()
14{ 14{
15 bodyCache.clear(); 15 bodyCache.clear();
16 m_storage = 0; 16 m_storage = 0;
17 m_folder = 0; 17 m_folder = 0;
18} 18}
19 19
20Genericwrapper::~Genericwrapper() 20Genericwrapper::~Genericwrapper()
21{ 21{
22 if (m_folder) { 22 if (m_folder) {
23 mailfolder_free(m_folder); 23 mailfolder_free(m_folder);
24 } 24 }
25 if (m_storage) { 25 if (m_storage) {
26 mailstorage_free(m_storage); 26 mailstorage_free(m_storage);
27 } 27 }
28 cleanMimeCache(); 28 cleanMimeCache();
29} 29}
30const QDateTime Genericwrapper::parseDateTime( mailimf_date_time *date ) 30const QDateTime Genericwrapper::parseDateTime( mailimf_date_time *date )
31{ 31{
32 32
33 QDate da (date->dt_year,date->dt_month, date->dt_day ); 33 QDate da (date->dt_year,date->dt_month, date->dt_day );
34 QTime ti ( date->dt_hour, date->dt_min, date->dt_sec ); 34 QTime ti ( date->dt_hour, date->dt_min, date->dt_sec );
35 QDateTime dt ( da ,ti ); 35 QDateTime dt ( da ,ti );
36 int addsec = -date->dt_zone*36; 36 int addsec = -date->dt_zone*36;
37 //qDebug("adsec1 %d ",addsec ); 37 //qDebug("adsec1 %d ",addsec );
38 dt = dt.addSecs( addsec ); 38 dt = dt.addSecs( addsec );
39 int off = KGlobal::locale()->localTimeOffset( dt ); 39 int off = KGlobal::locale()->localTimeOffset( dt );
40 //qDebug("adsec2 %d ",off*60 ); 40 //qDebug("adsec2 %d ",off*60 );
41 41
42 dt = dt.addSecs( off*60 ); 42 dt = dt.addSecs( off*60 );
43 return dt; 43 return dt;
44#if 0 44#if 0
45 QString ret; 45 QString ret;
46 if ( dt.date() == QDate::currentDate () ) 46 if ( dt.date() == QDate::currentDate () )
47 ret = KGlobal::locale()->formatTime( dt.time(),true); 47 ret = KGlobal::locale()->formatTime( dt.time(),true);
48 48
49 else { 49 else {
50 ret = KGlobal::locale()->formatDateTime( dt,true,true); 50 ret = KGlobal::locale()->formatDateTime( dt,true,true);
51 } 51 }
52#endif 52#endif
53#if 0 53#if 0
54 if ( off < 0 ) 54 if ( off < 0 )
55 ret += " -"; 55 ret += " -";
56 else 56 else
57 ret += " +"; 57 ret += " +";
58 ret += QString::number( off / 60 ); 58 ret += QString::number( off / 60 );
59 ret += "h"; 59 ret += "h";
60#endif 60#endif
61#if 0 61#if 0
62 char tmp[23]; 62 char tmp[23];
63 63
64 // snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i", 64 // snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i",
65 // date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); 65 // date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
66 snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %+05i", 66 snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %+05i",
67 date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); 67 date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
68 68
69 69
70 return QString( tmp ); 70 return QString( tmp );
71#endif 71#endif
72 //return ret; 72 //return ret;
73} 73}
74 74
75void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime) 75void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime)
76{ 76{
77 if (!mime) { 77 if (!mime) {
78 return; 78 return;
79 } 79 }
80 mailmime_field*field = 0; 80 mailmime_field*field = 0;
81 mailmime_single_fields fields; 81 mailmime_single_fields fields;
82 memset(&fields, 0, sizeof(struct mailmime_single_fields)); 82 memset(&fields, 0, sizeof(struct mailmime_single_fields));
83 if (mime->mm_mime_fields != NULL) { 83 if (mime->mm_mime_fields != NULL) {
84 mailmime_single_fields_init(&fields, mime->mm_mime_fields, 84 mailmime_single_fields_init(&fields, mime->mm_mime_fields,
85 mime->mm_content_type); 85 mime->mm_content_type);
86 } 86 }
87 87
88 mailmime_content*type = fields.fld_content; 88 mailmime_content*type = fields.fld_content;
89 clistcell*current; 89 clistcell*current;
90 if (!type) { 90 if (!type) {
91 target->setType("text"); 91 target->setType("text");
92 target->setSubtype("plain"); 92 target->setSubtype("plain");
93 } else { 93 } else {
94 target->setSubtype(type->ct_subtype); 94 target->setSubtype(type->ct_subtype);
95 switch(type->ct_type->tp_data.tp_discrete_type->dt_type) { 95 switch(type->ct_type->tp_data.tp_discrete_type->dt_type) {
96 case MAILMIME_DISCRETE_TYPE_TEXT: 96 case MAILMIME_DISCRETE_TYPE_TEXT:
97 target->setType("text"); 97 target->setType("text");
98 break; 98 break;
99 case MAILMIME_DISCRETE_TYPE_IMAGE: 99 case MAILMIME_DISCRETE_TYPE_IMAGE:
100 target->setType("image"); 100 target->setType("image");
101 break; 101 break;
102 case MAILMIME_DISCRETE_TYPE_AUDIO: 102 case MAILMIME_DISCRETE_TYPE_AUDIO:
103 target->setType("audio"); 103 target->setType("audio");
104 break; 104 break;
105 case MAILMIME_DISCRETE_TYPE_VIDEO: 105 case MAILMIME_DISCRETE_TYPE_VIDEO:
106 target->setType("video"); 106 target->setType("video");
107 break; 107 break;
108 case MAILMIME_DISCRETE_TYPE_APPLICATION: 108 case MAILMIME_DISCRETE_TYPE_APPLICATION:
109 target->setType("application"); 109 target->setType("application");
110 break; 110 break;
111 case MAILMIME_DISCRETE_TYPE_EXTENSION: 111 case MAILMIME_DISCRETE_TYPE_EXTENSION:
112 default: 112 default:
113 if (type->ct_type->tp_data.tp_discrete_type->dt_extension) { 113 if (type->ct_type->tp_data.tp_discrete_type->dt_extension) {
114 target->setType(type->ct_type->tp_data.tp_discrete_type->dt_extension); 114 target->setType(type->ct_type->tp_data.tp_discrete_type->dt_extension);
115 } 115 }
116 break; 116 break;
117 } 117 }
118 if (type->ct_parameters) { 118 if (type->ct_parameters) {
119 fillParameters(target,type->ct_parameters); 119 fillParameters(target,type->ct_parameters);
120 } 120 }
121 } 121 }
122 if (mime->mm_mime_fields && mime->mm_mime_fields->fld_list) { 122 if (mime->mm_mime_fields && mime->mm_mime_fields->fld_list) {
123 for (current=clist_begin(mime->mm_mime_fields->fld_list);current!=0;current=clist_next(current)) { 123 for (current=clist_begin(mime->mm_mime_fields->fld_list);current!=0;current=clist_next(current)) {
124 field = (mailmime_field*)current->data; 124 field = (mailmime_field*)current->data;
125 switch(field->fld_type) { 125 switch(field->fld_type) {
126 case MAILMIME_FIELD_TRANSFER_ENCODING: 126 case MAILMIME_FIELD_TRANSFER_ENCODING:
127 target->setEncoding(getencoding(field->fld_data.fld_encoding)); 127 target->setEncoding(getencoding(field->fld_data.fld_encoding));
128 break; 128 break;
129 case MAILMIME_FIELD_ID: 129 case MAILMIME_FIELD_ID:
130 target->setIdentifier(field->fld_data.fld_id); 130 target->setIdentifier(field->fld_data.fld_id);
131 break; 131 break;
132 case MAILMIME_FIELD_DESCRIPTION: 132 case MAILMIME_FIELD_DESCRIPTION:
133 target->setDescription(field->fld_data.fld_description); 133 target->setDescription(field->fld_data.fld_description);
134 break; 134 break;
135 default: 135 default:
136 break; 136 break;
137 } 137 }
138 } 138 }
139 } 139 }
140} 140}
141 141
142void Genericwrapper::fillParameters(RecPartP&target,clist*parameters) 142void Genericwrapper::fillParameters(RecPartP&target,clist*parameters)
143{ 143{
144 if (!parameters) {return;} 144 if (!parameters) {return;}
145 clistcell*current=0; 145 clistcell*current=0;
146 mailmime_parameter*param; 146 mailmime_parameter*param;
147 for (current=clist_begin(parameters);current!=0;current=clist_next(current)) { 147 for (current=clist_begin(parameters);current!=0;current=clist_next(current)) {
148 param = (mailmime_parameter*)current->data; 148 param = (mailmime_parameter*)current->data;
149 if (param) { 149 if (param) {
150 target->addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); 150 target->addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
151 } 151 }
152 } 152 }
153} 153}
154 154
155QString Genericwrapper::getencoding(mailmime_mechanism*aEnc) 155QString Genericwrapper::getencoding(mailmime_mechanism*aEnc)
156{ 156{
157 QString enc="7bit"; 157 QString enc="7bit";
158 if (!aEnc) return enc; 158 if (!aEnc) return enc;
159 switch(aEnc->enc_type) { 159 switch(aEnc->enc_type) {
160 case MAILMIME_MECHANISM_7BIT: 160 case MAILMIME_MECHANISM_7BIT:
161 enc = "7bit"; 161 enc = "7bit";
162 break; 162 break;
163 case MAILMIME_MECHANISM_8BIT: 163 case MAILMIME_MECHANISM_8BIT:
164 enc = "8bit"; 164 enc = "8bit";
165 break; 165 break;
166 case MAILMIME_MECHANISM_BINARY: 166 case MAILMIME_MECHANISM_BINARY:
167 enc = "binary"; 167 enc = "binary";
168 break; 168 break;
169 case MAILMIME_MECHANISM_QUOTED_PRINTABLE: 169 case MAILMIME_MECHANISM_QUOTED_PRINTABLE:
170 enc = "quoted-printable"; 170 enc = "quoted-printable";
171 break; 171 break;
172 case MAILMIME_MECHANISM_BASE64: 172 case MAILMIME_MECHANISM_BASE64:
173 enc = "base64"; 173 enc = "base64";
174 break; 174 break;
175 case MAILMIME_MECHANISM_TOKEN: 175 case MAILMIME_MECHANISM_TOKEN:
176 default: 176 default:
177 if (aEnc->enc_token) { 177 if (aEnc->enc_token) {
178 enc = QString(aEnc->enc_token); 178 enc = QString(aEnc->enc_token);
179 } 179 }
180 break; 180 break;
181 } 181 }
182 return enc; 182 return enc;
183} 183}
184 184
185void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count) 185void Genericwrapper::traverseBody(RecBodyP&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rec,int current_count)
186{ 186{
187 if (current_rec >= 10) { 187 if (current_rec >= 10) {
188 ; // odebug << "too deep recursion!" << oendl; 188 ; // odebug << "too deep recursion!" << oendl;
189 } 189 }
190 if (!message || !mime) { 190 if (!message || !mime) {
191 return; 191 return;
192 } 192 }
193 int r; 193 int r;
194 char*data = 0; 194 char*data = 0;
195 size_t len; 195 size_t len;
196 clistiter * cur = 0; 196 clistiter * cur = 0;
197 QString b; 197 QString b;
198 RecPartP part = new RecPart(); 198 RecPartP part = new RecPart();
199 199
200 switch (mime->mm_type) { 200 switch (mime->mm_type) {
201 case MAILMIME_SINGLE: 201 case MAILMIME_SINGLE:
202 { 202 {
203 QValueList<int>countlist = recList; 203 QValueList<int>countlist = recList;
204 countlist.append(current_count); 204 countlist.append(current_count);
205 r = mailmessage_fetch_section(message,mime,&data,&len); 205 r = mailmessage_fetch_section(message,mime,&data,&len);
206 part->setSize(len); 206 part->setSize(len);
207 part->setPositionlist(countlist); 207 part->setPositionlist(countlist);
208 b = gen_attachment_id(); 208 b = gen_attachment_id();
209 part->setIdentifier(b); 209 part->setIdentifier(b);
210 fillSingleBody(part,message,mime); 210 fillSingleBody(part,message,mime);
211 if (part->Type()=="text" && target->Bodytext().isNull()) { 211 if (part->Type()=="text" && target->Bodytext().isNull()) {
212 encodedString*rs = new encodedString(); 212 encodedString*rs = new encodedString();
213 rs->setContent(data,len); 213 rs->setContent(data,len);
214 encodedString*res = decode_String(rs,part->Encoding()); 214 encodedString*res = decode_String(rs,part->Encoding());
215 if (countlist.count()>2) { 215 if (countlist.count()>2) {
216 bodyCache[b]=rs; 216 bodyCache[b]=rs;
217 target->addPart(part); 217 target->addPart(part);
218 } else { 218 } else {
219 delete rs; 219 delete rs;
220 } 220 }
221 b = QString(res->Content()); 221 b = QString(res->Content());
222 delete res; 222 delete res;
223 size_t index = 0; 223 size_t index = 0;
224 char*resu = 0; 224 char*resu = 0;
225 int err = MAILIMF_NO_ERROR; 225 int err = MAILIMF_NO_ERROR;
226 QString charset = part->searchParamter( "charset"); 226 QString charset = part->searchParamter( "charset");
227 qDebug("CHARSET %s ",charset.latin1() ); 227 qDebug("CHARSET %s ",charset.latin1() );
228#if 0
228 if (false ) { 229 if (false ) {
229 //if ( !charset.isEmpty() ) { 230 //if ( !charset.isEmpty() ) {
230 target->setCharset( charset ); 231 target->setCharset( charset );
231 err = mailmime_encoded_phrase_parse(charset.latin1(), 232 err = mailmime_encoded_phrase_parse(charset.latin1(),
232 b.latin1(), b.length(),&index, "utf-8",&resu); 233 b.latin1(), b.length(),&index, "utf-8",&resu);
233 if (err == MAILIMF_NO_ERROR && resu && strlen(resu)) { 234 if (err == MAILIMF_NO_ERROR && resu && strlen(resu)) {
234 //qDebug("res %d %s ", index, resu); 235 //qDebug("res %d %s ", index, resu);
235 b = QString::fromUtf8(resu); 236 b = QString::fromUtf8(resu);
236 } 237 }
237 if (resu) free(resu); 238 if (resu) free(resu);
238 } 239 }
240#endif
239 target->setBodytext(b); 241 target->setBodytext(b);
240 target->setDescription(part); 242 target->setDescription(part);
241 } else { 243 } else {
242 bodyCache[b]=new encodedString(data,len); 244 bodyCache[b]=new encodedString(data,len);
243 target->addPart(part); 245 target->addPart(part);
244 } 246 }
245 } 247 }
246 break; 248 break;
247 case MAILMIME_MULTIPLE: 249 case MAILMIME_MULTIPLE:
248 { 250 {
249 unsigned int ccount = 1; 251 unsigned int ccount = 1;
250 mailmime*cbody=0; 252 mailmime*cbody=0;
251 QValueList<int>countlist = recList; 253 QValueList<int>countlist = recList;
252 for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) { 254 for (cur = clist_begin(mime->mm_data.mm_multipart.mm_mp_list) ; cur != NULL ; cur = clist_next(cur)) {
253 cbody = (mailmime*)clist_content(cur); 255 cbody = (mailmime*)clist_content(cur);
254 if (cbody->mm_type==MAILMIME_MULTIPLE) { 256 if (cbody->mm_type==MAILMIME_MULTIPLE) {
255 RecPartP targetPart = new RecPart(); 257 RecPartP targetPart = new RecPart();
256 targetPart->setType("multipart"); 258 targetPart->setType("multipart");
257 countlist.append(current_count); 259 countlist.append(current_count);
258 targetPart->setPositionlist(countlist); 260 targetPart->setPositionlist(countlist);
259 target->addPart(targetPart); 261 target->addPart(targetPart);
260 } 262 }
261 traverseBody(target,message, cbody,countlist,current_rec+1,ccount); 263 traverseBody(target,message, cbody,countlist,current_rec+1,ccount);
262 if (cbody->mm_type==MAILMIME_MULTIPLE) { 264 if (cbody->mm_type==MAILMIME_MULTIPLE) {
263 countlist = recList; 265 countlist = recList;
264 } 266 }
265 ++ccount; 267 ++ccount;
266 } 268 }
267 } 269 }
268 break; 270 break;
269 case MAILMIME_MESSAGE: 271 case MAILMIME_MESSAGE:
270 { 272 {
271 QValueList<int>countlist = recList; 273 QValueList<int>countlist = recList;
272 countlist.append(current_count); 274 countlist.append(current_count);
273 /* the own header is always at recursion 0 - we don't need that */ 275 /* the own header is always at recursion 0 - we don't need that */
274 if (current_rec > 0) { 276 if (current_rec > 0) {
275 part->setPositionlist(countlist); 277 part->setPositionlist(countlist);
276 r = mailmessage_fetch_section(message,mime,&data,&len); 278 r = mailmessage_fetch_section(message,mime,&data,&len);
277 part->setSize(len); 279 part->setSize(len);
278 part->setPositionlist(countlist); 280 part->setPositionlist(countlist);
279 b = gen_attachment_id(); 281 b = gen_attachment_id();
280 part->setIdentifier(b); 282 part->setIdentifier(b);
281 part->setType("message"); 283 part->setType("message");
282 part->setSubtype("rfc822"); 284 part->setSubtype("rfc822");
283 bodyCache[b]=new encodedString(data,len); 285 bodyCache[b]=new encodedString(data,len);
284 target->addPart(part); 286 target->addPart(part);
285 } 287 }
286 if (mime->mm_data.mm_message.mm_msg_mime != NULL) { 288 if (mime->mm_data.mm_message.mm_msg_mime != NULL) {
287 traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1); 289 traverseBody(target,message,mime->mm_data.mm_message.mm_msg_mime,countlist,current_rec+1);
288 } 290 }
289 } 291 }
290 break; 292 break;
291 } 293 }
292} 294}
293 295
294RecBodyP Genericwrapper::parseMail( mailmessage * msg ) 296RecBodyP Genericwrapper::parseMail( mailmessage * msg )
295{ 297{
296 int err = MAILIMF_NO_ERROR; 298 int err = MAILIMF_NO_ERROR;
297 //mailmime_single_fields fields; 299 //mailmime_single_fields fields;
298 /* is bound to msg and will be freed there */ 300 /* is bound to msg and will be freed there */
299 mailmime * mime=0; 301 mailmime * mime=0;
300 RecBodyP body = new RecBody(); 302 RecBodyP body = new RecBody();
301 //memset(&fields, 0, sizeof(struct mailmime_single_fields)); 303 //memset(&fields, 0, sizeof(struct mailmime_single_fields));
302 err = mailmessage_get_bodystructure(msg,&mime); 304 err = mailmessage_get_bodystructure(msg,&mime);
303 QValueList<int>recList; 305 QValueList<int>recList;
304 traverseBody(body,msg,mime,recList); 306 traverseBody(body,msg,mime,recList);
305 return body; 307 return body;
306} 308}
307 309
308 310
309QString Genericwrapper::parseAddressList( mailimf_address_list *list ) 311QString Genericwrapper::parseAddressList( mailimf_address_list *list )
310{ 312{
311 QString result( "" ); 313 QString result( "" );
312 314
313 bool first = true; 315 bool first = true;
314 if (list == 0) return result; 316 if (list == 0) return result;
315 for ( clistiter *current = clist_begin( list->ad_list ); current != NULL; current = current->next ) { 317 for ( clistiter *current = clist_begin( list->ad_list ); current != NULL; current = current->next ) {
316 mailimf_address *addr = (mailimf_address *) current->data; 318 mailimf_address *addr = (mailimf_address *) current->data;
317 319
318 if ( !first ) { 320 if ( !first ) {
319 result.append( "," ); 321 result.append( "," );
320 } else { 322 } else {
321 first = false; 323 first = false;
322 } 324 }
323 325
324 switch ( addr->ad_type ) { 326 switch ( addr->ad_type ) {
325 case MAILIMF_ADDRESS_MAILBOX: 327 case MAILIMF_ADDRESS_MAILBOX:
326 result.append( parseMailbox( addr->ad_data.ad_mailbox ) ); 328 result.append( parseMailbox( addr->ad_data.ad_mailbox ) );
327 break; 329 break;
328 case MAILIMF_ADDRESS_GROUP: 330 case MAILIMF_ADDRESS_GROUP:
329 result.append( parseGroup( addr->ad_data.ad_group ) ); 331 result.append( parseGroup( addr->ad_data.ad_group ) );
330 break; 332 break;
331 default: 333 default:
332 ; // odebug << "Generic: unkown mailimf address type" << oendl; 334 ; // odebug << "Generic: unkown mailimf address type" << oendl;
333 break; 335 break;
334 } 336 }
335 } 337 }
336 338
337 return result; 339 return result;
338} 340}
339 341
340QString Genericwrapper::parseGroup( mailimf_group *group ) 342QString Genericwrapper::parseGroup( mailimf_group *group )
341{ 343{
342 QString result( "" ); 344 QString result( "" );
343 345
344 result.append( group->grp_display_name ); 346 result.append( group->grp_display_name );
345 result.append( ": " ); 347 result.append( ": " );
346 348
347 if ( group->grp_mb_list != NULL ) { 349 if ( group->grp_mb_list != NULL ) {
348 result.append( parseMailboxList( group->grp_mb_list ) ); 350 result.append( parseMailboxList( group->grp_mb_list ) );
349 } 351 }
350 352
351 result.append( ";" ); 353 result.append( ";" );
352 354
353 return result; 355 return result;
354} 356}
355 357
356QString Genericwrapper::parseMailbox( mailimf_mailbox *box ) 358QString Genericwrapper::parseMailbox( mailimf_mailbox *box )
357{ 359{
358 QString result( "" ); 360 QString result( "" );
359 361
360 if ( box->mb_display_name == NULL ) { 362 if ( box->mb_display_name == NULL ) {
361 result.append( box->mb_addr_spec ); 363 result.append( box->mb_addr_spec );
362 } else { 364 } else {
363 result.append( convert_String(box->mb_display_name) ); 365 result.append( convert_String(box->mb_display_name) );
364 result.append( " <" ); 366 result.append( " <" );
365 result.append( box->mb_addr_spec ); 367 result.append( box->mb_addr_spec );
366 result.append( ">" ); 368 result.append( ">" );
367 } 369 }
368 370
369 return result; 371 return result;
370} 372}
371 373
372QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list ) 374QString Genericwrapper::parseMailboxList( mailimf_mailbox_list *list )
373{ 375{
374 QString result( "" ); 376 QString result( "" );
375 377
376 bool first = true; 378 bool first = true;
377 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) { 379 for ( clistiter *current = clist_begin( list->mb_list ); current != NULL; current = current->next ) {
378 mailimf_mailbox *box = (mailimf_mailbox *) current->data; 380 mailimf_mailbox *box = (mailimf_mailbox *) current->data;
379 381
380 if ( !first ) { 382 if ( !first ) {
381 result.append( "," ); 383 result.append( "," );
382 } else { 384 } else {
383 first = false; 385 first = false;
384 } 386 }
385 387
386 result.append( parseMailbox( box ) ); 388 result.append( parseMailbox( box ) );
387 } 389 }
388 390
389 return result; 391 return result;
390} 392}
391 393
392encodedString* Genericwrapper::fetchDecodedPart(const RecMailP&,const RecPartP&part) 394encodedString* Genericwrapper::fetchDecodedPart(const RecMailP&,const RecPartP&part)
393{ 395{
394 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier()); 396 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier());
395 if (it==bodyCache.end()) return new encodedString(); 397 if (it==bodyCache.end()) return new encodedString();
396 encodedString*t = decode_String(it.data(),part->Encoding()); 398 encodedString*t = decode_String(it.data(),part->Encoding());
397 return t; 399 return t;
398} 400}
399 401
400encodedString* Genericwrapper::fetchRawPart(const RecMailP&,const RecPartP&part) 402encodedString* Genericwrapper::fetchRawPart(const RecMailP&,const RecPartP&part)
401{ 403{
402 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier()); 404 QMap<QString,encodedString*>::ConstIterator it = bodyCache.find(part->Identifier());
403 if (it==bodyCache.end()) return new encodedString(); 405 if (it==bodyCache.end()) return new encodedString();
404 encodedString*t = it.data(); 406 encodedString*t = it.data();
405 return t; 407 return t;
406} 408}
407 409
408QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPartP&part) 410QString Genericwrapper::fetchTextPart(const RecMailP&mail,const RecPartP&part)
409{ 411{
410 encodedString*t = fetchDecodedPart(mail,part); 412 encodedString*t = fetchDecodedPart(mail,part);
411 QString text=t->Content(); 413 QString text=t->Content();
412 delete t; 414 delete t;
413 return text; 415 return text;
414} 416}
415 417
416void Genericwrapper::cleanMimeCache() 418void Genericwrapper::cleanMimeCache()
417{ 419{
418 QMap<QString,encodedString*>::Iterator it = bodyCache.begin(); 420 QMap<QString,encodedString*>::Iterator it = bodyCache.begin();
419 for (;it!=bodyCache.end();++it) { 421 for (;it!=bodyCache.end();++it) {
420 encodedString*t = it.data(); 422 encodedString*t = it.data();
421 //it.setValue(0); 423 //it.setValue(0);
422 if (t) delete t; 424 if (t) delete t;
423 } 425 }
424 bodyCache.clear(); 426 bodyCache.clear();
425 ; // odebug << "Genericwrapper: cache cleaned" << oendl; 427 ; // odebug << "Genericwrapper: cache cleaned" << oendl;
426} 428}
427 429
428QStringList Genericwrapper::parseInreplies(mailimf_in_reply_to * in_replies) 430QStringList Genericwrapper::parseInreplies(mailimf_in_reply_to * in_replies)
429{ 431{
430 QStringList res; 432 QStringList res;
431 if (!in_replies || !in_replies->mid_list) return res; 433 if (!in_replies || !in_replies->mid_list) return res;
432 clistiter * current = 0; 434 clistiter * current = 0;
433 for ( current = clist_begin( in_replies->mid_list ); current != NULL; current = current->next ) { 435 for ( current = clist_begin( in_replies->mid_list ); current != NULL; current = current->next ) {
434 QString h((char*)current->data); 436 QString h((char*)current->data);
435 while (h.length()>0 && h[0]=='<') { 437 while (h.length()>0 && h[0]=='<') {
436 h.remove(0,1); 438 h.remove(0,1);
437 } 439 }
438 while (h.length()>0 && h[h.length()-1]=='>') { 440 while (h.length()>0 && h[h.length()-1]=='>') {
439 h.remove(h.length()-1,1); 441 h.remove(h.length()-1,1);
440 } 442 }
441 if (h.length()>0) { 443 if (h.length()>0) {
442 res.append(h); 444 res.append(h);
443 } 445 }
444 } 446 }
445 return res; 447 return res;
446} 448}
447 449
448void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to, int maxSizeInKb) 450void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to, int maxSizeInKb)
449{ 451{
450 int r; 452 int r;
451 mailmessage_list * env_list = 0; 453 mailmessage_list * env_list = 0;
452 r = mailsession_get_messages_list(session,&env_list); 454 r = mailsession_get_messages_list(session,&env_list);
453 if (r != MAIL_NO_ERROR) { 455 if (r != MAIL_NO_ERROR) {
454 ; // odebug << "Error message list" << oendl; 456 ; // odebug << "Error message list" << oendl;
455 return; 457 return;
456 } 458 }
457 r = mailsession_get_envelopes_list(session, env_list); 459 r = mailsession_get_envelopes_list(session, env_list);
458 if (r != MAIL_NO_ERROR) { 460 if (r != MAIL_NO_ERROR) {
459 ; // odebug << "Error filling message list" << oendl; 461 ; // odebug << "Error filling message list" << oendl;
460 if (env_list) { 462 if (env_list) {
461 mailmessage_list_free(env_list); 463 mailmessage_list_free(env_list);
462 } 464 }
463 return; 465 return;
464 } 466 }
465 mailimf_references * refs = 0; 467 mailimf_references * refs = 0;
466 mailimf_in_reply_to * in_replies = 0; 468 mailimf_in_reply_to * in_replies = 0;
467 uint32_t i = 0; 469 uint32_t i = 0;
468 for(; i < carray_count(env_list->msg_tab) ; ++i) { 470 for(; i < carray_count(env_list->msg_tab) ; ++i) {
469 mailmessage * msg; 471 mailmessage * msg;
470 QBitArray mFlags(7); 472 QBitArray mFlags(7);
471 msg = (mailmessage*)carray_get(env_list->msg_tab, i); 473 msg = (mailmessage*)carray_get(env_list->msg_tab, i);
472 if (msg->msg_fields == NULL) { 474 if (msg->msg_fields == NULL) {
473 //; // odebug << "could not fetch envelope of message " << i << "" << oendl; 475 //; // odebug << "could not fetch envelope of message " << i << "" << oendl;
474 continue; 476 continue;
475 } 477 }
476 RecMailP mail = new RecMail(); 478 RecMailP mail = new RecMail();
477 mail->setWrapper(this); 479 mail->setWrapper(this);
478 mail_flags * flag_result = 0; 480 mail_flags * flag_result = 0;
479 r = mailmessage_get_flags(msg,&flag_result); 481 r = mailmessage_get_flags(msg,&flag_result);
480 if (r == MAIL_ERROR_NOT_IMPLEMENTED) { 482 if (r == MAIL_ERROR_NOT_IMPLEMENTED) {
481 mFlags.setBit(FLAG_SEEN); 483 mFlags.setBit(FLAG_SEEN);
482 } 484 }
483 mailimf_single_fields single_fields; 485 mailimf_single_fields single_fields;
484 mailimf_single_fields_init(&single_fields, msg->msg_fields); 486 mailimf_single_fields_init(&single_fields, msg->msg_fields);
485 mail->setMsgsize(msg->msg_size); 487 mail->setMsgsize(msg->msg_size);
486 mail->setFlags(mFlags); 488 mail->setFlags(mFlags);
487 mail->setMbox(mailbox); 489 mail->setMbox(mailbox);
488 mail->setNumber(msg->msg_index); 490 mail->setNumber(msg->msg_index);
489 if (single_fields.fld_subject) 491 if (single_fields.fld_subject)
490 mail->setSubject( convert_String(single_fields.fld_subject->sbj_value)); 492 mail->setSubject( convert_String(single_fields.fld_subject->sbj_value));
491 if (single_fields.fld_from) 493 if (single_fields.fld_from)
492 mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list)); 494 mail->setFrom(parseMailboxList(single_fields.fld_from->frm_mb_list));
493 if (!mbox_as_to) { 495 if (!mbox_as_to) {
494 if (single_fields.fld_to) 496 if (single_fields.fld_to)
495 mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) ); 497 mail->setTo( parseAddressList( single_fields.fld_to->to_addr_list ) );
496 } else { 498 } else {
497 mail->setTo(mailbox); 499 mail->setTo(mailbox);
498 } 500 }
499 if (single_fields.fld_cc) 501 if (single_fields.fld_cc)
500 mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); 502 mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) );
501 if (single_fields.fld_bcc) 503 if (single_fields.fld_bcc)
502 mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); 504 mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) );
503 if (single_fields.fld_orig_date) { 505 if (single_fields.fld_orig_date) {
504 QDateTime dt = Genericwrapper::parseDateTime( single_fields.fld_orig_date->dt_date_time ); 506 QDateTime dt = Genericwrapper::parseDateTime( single_fields.fld_orig_date->dt_date_time );
505 QString ret; 507 QString ret;
506 if ( dt.date() == QDate::currentDate () ) 508 if ( dt.date() == QDate::currentDate () )
507 ret = KGlobal::locale()->formatTime( dt.time(),true); 509 ret = KGlobal::locale()->formatTime( dt.time(),true);
508 else { 510 else {
509 ret = KGlobal::locale()->formatDateTime( dt,true,true); 511 ret = KGlobal::locale()->formatDateTime( dt,true,true);
510 } 512 }
511 mail->setDate( ret ); 513 mail->setDate( ret );
512 char tmp[20]; 514 char tmp[20];
513 snprintf( tmp, 20, "%04i-%02i-%02i %02i:%02i:%02i", 515 snprintf( tmp, 20, "%04i-%02i-%02i %02i:%02i:%02i",
514 dt.date().year(),dt.date().month(), dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second() ); 516 dt.date().year(),dt.date().month(), dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second() );
515 //qDebug(" iso %s ", tmp); 517 //qDebug(" iso %s ", tmp);
516 mail->setIsoDate( QString( tmp ) ); 518 mail->setIsoDate( QString( tmp ) );
517 } 519 }
518 // crashes when accessing pop3 account? 520 // crashes when accessing pop3 account?
519 if (single_fields.fld_message_id) { 521 if (single_fields.fld_message_id) {
520 mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); 522 mail->setMsgid(QString(single_fields.fld_message_id->mid_value));
521 ; // odebug << "Msgid == " << mail->Msgid().latin1() << "" << oendl; 523 ; // odebug << "Msgid == " << mail->Msgid().latin1() << "" << oendl;
522 } 524 }
523 if (single_fields.fld_reply_to) { 525 if (single_fields.fld_reply_to) {
524 QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list); 526 QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list);
525 if (t.count()>0) { 527 if (t.count()>0) {
526 mail->setReplyto(t[0]); 528 mail->setReplyto(t[0]);
527 } 529 }
528 } 530 }
529#if 0 531#if 0
530 refs = single_fields.fld_references; 532 refs = single_fields.fld_references;
531 if (refs && refs->mid_list && clist_count(refs->mid_list)) { 533 if (refs && refs->mid_list && clist_count(refs->mid_list)) {
532 char * text = (char*)refs->mid_list->first->data; 534 char * text = (char*)refs->mid_list->first->data;
533 mail->setReplyto(QString(text)); 535 mail->setReplyto(QString(text));
534 } 536 }
535#endif 537#endif
536 if (single_fields.fld_in_reply_to && single_fields.fld_in_reply_to->mid_list && 538 if (single_fields.fld_in_reply_to && single_fields.fld_in_reply_to->mid_list &&
537 clist_count(single_fields.fld_in_reply_to->mid_list)) { 539 clist_count(single_fields.fld_in_reply_to->mid_list)) {
538 mail->setInreply(parseInreplies(single_fields.fld_in_reply_to)); 540 mail->setInreply(parseInreplies(single_fields.fld_in_reply_to));
539 } 541 }
540 if ( maxSizeInKb == 0 || mail->Msgsize()<=maxSizeInKb*1024 ) 542 if ( maxSizeInKb == 0 || mail->Msgsize()<=maxSizeInKb*1024 )
541 target.append(mail); 543 target.append(mail);
542 } 544 }
543 if (env_list) { 545 if (env_list) {
544 mailmessage_list_free(env_list); 546 mailmessage_list_free(env_list);
545 } 547 }
546} 548}
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index 8c0a4cb..0e4a64f 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -1,354 +1,355 @@
1 1
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3#include <qlabel.h> 3#include <qlabel.h>
4#include <qvbox.h> 4#include <qvbox.h>
5#include <qheader.h> 5#include <qheader.h>
6#include <qtimer.h> 6#include <qtimer.h>
7#include <qlayout.h> 7#include <qlayout.h>
8//#include <kdialog.h> 8//#include <kdialog.h>
9#include <kiconloader.h> 9#include <kiconloader.h>
10#include <kapplication.h> 10#include <kapplication.h>
11 11
12#ifdef DESKTOP_VERSION 12#ifdef DESKTOP_VERSION
13#include <qapplication.h> 13#include <qapplication.h>
14#include <qstatusbar.h> 14#include <qstatusbar.h>
15#include <kabc/stdaddressbook.h> 15#include <kabc/stdaddressbook.h>
16extern QStatusBar* globalSstatusBarMainWindow; 16extern QStatusBar* globalSstatusBarMainWindow;
17#else 17#else
18#include <qpe/qpeapplication.h> 18#include <qpe/qpeapplication.h>
19#include <klocale.h>
19#endif 20#endif
20#include "defines.h" 21#include "defines.h"
21#include "mainwindow.h" 22#include "mainwindow.h"
22#include <KDGanttMinimizeSplitter.h> 23#include <KDGanttMinimizeSplitter.h>
23 24
24#include "koprefs.h" 25#include "koprefs.h"
25 26
26MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 27MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
27 : QMainWindow( parent, name ) //, flags ) 28 : QMainWindow( parent, name ) //, flags )
28{ 29{
29#ifdef DESKTOP_VERSION 30#ifdef DESKTOP_VERSION
30 globalSstatusBarMainWindow = statusBar(); 31 globalSstatusBarMainWindow = statusBar();
31#endif 32#endif
32 setCaption( i18n( "KOpieMail/Pi" ) ); 33 setCaption( i18n( "KOpieMail/Pi" ) );
33 setToolBarsMovable( false ); 34 setToolBarsMovable( false );
34 //KABC::StdAddressBook::self(); 35 //KABC::StdAddressBook::self();
35 toolBar = new QToolBar( this ); 36 toolBar = new QToolBar( this );
36 menuBar = new QPEMenuBar( toolBar ); 37 menuBar = new QPEMenuBar( toolBar );
37 mailMenu = new QPopupMenu( menuBar ); 38 mailMenu = new QPopupMenu( menuBar );
38 menuBar->insertItem( i18n( "Mail" ), mailMenu ); 39 menuBar->insertItem( i18n( "Mail" ), mailMenu );
39 settingsMenu = new QPopupMenu( menuBar ); 40 settingsMenu = new QPopupMenu( menuBar );
40 menuBar->insertItem( i18n( "Settings" ), settingsMenu ); 41 menuBar->insertItem( i18n( "Settings" ), settingsMenu );
41 42
42 addToolBar( toolBar ); 43 addToolBar( toolBar );
43 toolBar->setHorizontalStretchable( true ); 44 toolBar->setHorizontalStretchable( true );
44 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"), 45 QAction* getMail = new QAction( i18n( "Get all new mails" ), SmallIcon("enter"),
45 0, 0, this ); 46 0, 0, this );
46 connect(getMail, SIGNAL( activated() ), 47 connect(getMail, SIGNAL( activated() ),
47 SLOT( slotGetAllMail() ) ); 48 SLOT( slotGetAllMail() ) );
48 getMail->addTo( mailMenu ); 49 getMail->addTo( mailMenu );
49 50
50 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"), 51 getMail = new QAction( i18n( "Get new messages" ), SmallIcon("add"),
51 0, 0, this ); 52 0, 0, this );
52 getMail->addTo( toolBar ); 53 getMail->addTo( toolBar );
53 getMail->addTo( mailMenu ); 54 getMail->addTo( mailMenu );
54 connect(getMail, SIGNAL( activated() ), 55 connect(getMail, SIGNAL( activated() ),
55 SLOT( slotGetMail() ) ); 56 SLOT( slotGetMail() ) );
56 57
57 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"), 58 composeMail = new QAction( i18n( "Compose new mail" ), SmallIcon("composemail"),
58 0, 0, this ); 59 0, 0, this );
59 composeMail->addTo( toolBar ); 60 composeMail->addTo( toolBar );
60 composeMail->addTo( mailMenu ); 61 composeMail->addTo( mailMenu );
61 62
62 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") , 63 sendQueued = new QAction( i18n( "Send queued mails" ), SmallIcon("sendqueued") ,
63 0, 0, this ); 64 0, 0, this );
64 sendQueued->addTo( toolBar ); 65 sendQueued->addTo( toolBar );
65 sendQueued->addTo( mailMenu ); 66 sendQueued->addTo( mailMenu );
66 67
67 /* 68 /*
68 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC, 69 syncFolders = new QAction( i18n( "Sync mailfolders" ), ICON_SYNC,
69 0, 0, this ); 70 0, 0, this );
70 syncFolders->addTo( toolBar ); 71 syncFolders->addTo( toolBar );
71 syncFolders->addTo( mailMenu ); 72 syncFolders->addTo( mailMenu );
72 */ 73 */
73 74
74 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") , 75 showFolders = new QAction( i18n( "Show/Hide folders" ), SmallIcon("showfolders") ,
75 0, 0, this, 0, true ); 76 0, 0, this, 0, true );
76 showFolders->addTo( toolBar ); 77 showFolders->addTo( toolBar );
77 showFolders->addTo( mailMenu ); 78 showFolders->addTo( mailMenu );
78 showFolders->setOn( true ); 79 showFolders->setOn( true );
79 connect(showFolders, SIGNAL( toggled(bool) ), 80 connect(showFolders, SIGNAL( toggled(bool) ),
80 SLOT( slotShowFolders(bool) ) ); 81 SLOT( slotShowFolders(bool) ) );
81 82
82 /* 83 /*
83 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ), 84 searchMails = new QAction( i18n( "Search mails" ), SmallIcon("find") ),
84 0, 0, this ); 85 0, 0, this );
85 searchMails->addTo( toolBar ); 86 searchMails->addTo( toolBar );
86 searchMails->addTo( mailMenu ); 87 searchMails->addTo( mailMenu );
87 */ 88 */
88 89
89 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this); 90 deleteMails = new QAction(i18n("Delete Mail"), SmallIcon("trash"), 0, 0, this);
90 deleteMails->addTo( toolBar ); 91 deleteMails->addTo( toolBar );
91 deleteMails->addTo( mailMenu ); 92 deleteMails->addTo( mailMenu );
92 connect( deleteMails, SIGNAL( activated() ), 93 connect( deleteMails, SIGNAL( activated() ),
93 SLOT( slotDeleteMail() ) ); 94 SLOT( slotDeleteMail() ) );
94 95
95 editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") , 96 editSettings = new QAction( i18n( "Edit settings" ), SmallIcon("SettingsIcon") ,
96 0, 0, this ); 97 0, 0, this );
97 editSettings->addTo( settingsMenu ); 98 editSettings->addTo( settingsMenu );
98 connect( editSettings, SIGNAL( activated() ), 99 connect( editSettings, SIGNAL( activated() ),
99 SLOT( slotEditSettings() ) ); 100 SLOT( slotEditSettings() ) );
100 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") , 101 editAccounts = new QAction( i18n( "Configure accounts" ), SmallIcon("editaccounts") ,
101 0, 0, this ); 102 0, 0, this );
102 editAccounts->addTo( settingsMenu ); 103 editAccounts->addTo( settingsMenu );
103 codecMenu = new QPopupMenu( menuBar ); 104 codecMenu = new QPopupMenu( menuBar );
104 codecMenu->insertItem( "Western (iso-8859-1)",0,0); 105 codecMenu->insertItem( "Western (iso-8859-1)",0,0);
105 codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1); 106 codecMenu->insertItem( "Cyrillic (iso-8859-5)",1,1);
106 codecMenu->insertItem( "Western (iso-8859-15)",2,2); 107 codecMenu->insertItem( "Western (iso-8859-15)",2,2);
107 codecMenu->insertItem( "Chinese (big-5)",3,3); 108 codecMenu->insertItem( "Chinese (big-5)",3,3);
108 codecMenu->insertItem( "Unicode (utf-8)",4,4); 109 codecMenu->insertItem( "Unicode (utf-8)",4,4);
109 codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5); 110 codecMenu->insertItem( "Userdefined ("+KOPrefs::instance()->mSendCodec+")",5,5);
110 //disabled 111 //disabled
111 //settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu); 112 //settingsMenu->insertItem( i18n("Codec for new mails"), codecMenu);
112 //setCentralWidget( view ); 113 //setCentralWidget( view );
113 114
114 QVBox* wrapperBox = new QVBox( this ); 115 QVBox* wrapperBox = new QVBox( this );
115 setCentralWidget( wrapperBox ); 116 setCentralWidget( wrapperBox );
116 117
117 // QWidget *view = new QWidget( wrapperBox ); 118 // QWidget *view = new QWidget( wrapperBox );
118 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); 119 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox);
119 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); 120 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left);
120 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); 121 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight );
121 122
122 folderView = new AccountView( split ); 123 folderView = new AccountView( split );
123 folderView->header()->hide(); 124 folderView->header()->hide();
124 folderView->setRootIsDecorated( false ); 125 folderView->setRootIsDecorated( false );
125 folderView->addColumn( i18n( "Mailbox" ) ); 126 folderView->addColumn( i18n( "Mailbox" ) );
126 127
127 //layout->addWidget( folderView ); 128 //layout->addWidget( folderView );
128 129
129 mailView = new QListView( split ); 130 mailView = new QListView( split );
130 mailView->addColumn( i18n( " " ) ); 131 mailView->addColumn( i18n( " " ) );
131 mailView->addColumn( i18n( "Subject" ),QListView::Manual ); 132 mailView->addColumn( i18n( "Subject" ),QListView::Manual );
132 mailView->addColumn( i18n( "Sender" ),QListView::Manual ); 133 mailView->addColumn( i18n( "Sender" ),QListView::Manual );
133 mailView->addColumn( i18n( "Size" ),QListView::Manual); 134 mailView->addColumn( i18n( "Size" ),QListView::Manual);
134 mailView->addColumn( i18n( "Date" ),QListView::Manual); 135 mailView->addColumn( i18n( "Date" ),QListView::Manual);
135 mailView->setAllColumnsShowFocus(true); 136 mailView->setAllColumnsShowFocus(true);
136 //mailView->setSorting(-1); 137 //mailView->setSorting(-1);
137 mailView->setRootIsDecorated( false ); 138 mailView->setRootIsDecorated( false );
138 statusWidget = new StatusWidget( wrapperBox ); 139 statusWidget = new StatusWidget( wrapperBox );
139 statusWidget->hide(); 140 statusWidget->hide();
140 141
141 //layout->addWidget( mailView ); 142 //layout->addWidget( mailView );
142 //layout->setStretchFactor( folderView, 1 ); 143 //layout->setStretchFactor( folderView, 1 );
143 //layout->setStretchFactor( mailView, 2 ); 144 //layout->setStretchFactor( mailView, 2 );
144 145
145 slotAdjustLayout(); 146 slotAdjustLayout();
146#ifndef DESKTOP_VERSION 147#ifndef DESKTOP_VERSION
147 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); 148 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold);
148 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); 149 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold);
149#endif 150#endif
150 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, 151 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this,
151 SLOT( mailLeftClicked(QListViewItem*) ) ); 152 SLOT( mailLeftClicked(QListViewItem*) ) );
152 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, 153 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this,
153 SLOT( mailLeftClicked(QListViewItem*) ) ); 154 SLOT( mailLeftClicked(QListViewItem*) ) );
154 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 155 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
155 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); 156 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) );
156 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), 157 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)),
157 this,SLOT(refreshMailView(const QValueList<RecMailP>&))); 158 this,SLOT(refreshMailView(const QValueList<RecMailP>&)));
158 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); 159 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) );
159 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); 160 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) );
160// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); 161// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) );
161 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); 162 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) );
162 //mailView->setMultiSelection ( true ); 163 //mailView->setMultiSelection ( true );
163 mailView->setSelectionMode( QListView::Extended ); 164 mailView->setSelectionMode( QListView::Extended );
164 QValueList<int> list; 165 QValueList<int> list;
165 int fw = 100; 166 int fw = 100;
166 if ( QApplication::desktop()->width() > 320 ) 167 if ( QApplication::desktop()->width() > 320 )
167 fw = 50; 168 fw = 50;
168 list.append( fw ); 169 list.append( fw );
169 list.append( 100 ); 170 list.append( 100 );
170 split->setSizes( list ); 171 split->setSizes( list );
171 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); 172 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) );
172 mailView->setShowSortIndicator ( true ); 173 mailView->setShowSortIndicator ( true );
173 QLabel *spacer = new QLabel( toolBar ); 174 QLabel *spacer = new QLabel( toolBar );
174 spacer->setBackgroundMode( QWidget::PaletteButton ); 175 spacer->setBackgroundMode( QWidget::PaletteButton );
175 toolBar->setStretchableWidget( spacer ); 176 toolBar->setStretchableWidget( spacer );
176 177
177 QAction* closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this); 178 QAction* closeMail = new QAction(i18n("Close"),SmallIcon("exit"), 0, 0, this);
178 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); 179 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) );
179 if ( QApplication::desktop()->width() > 320 ) 180 if ( QApplication::desktop()->width() > 320 )
180 closeMail->addTo(toolBar); 181 closeMail->addTo(toolBar);
181 closeMail->addTo(mailMenu); 182 closeMail->addTo(mailMenu);
182 183
183 184
184 QPopupMenu* helpMenu = new QPopupMenu( menuBar ); 185 QPopupMenu* helpMenu = new QPopupMenu( menuBar );
185 menuBar->insertItem( i18n( "Help" ), helpMenu ); 186 menuBar->insertItem( i18n( "Help" ), helpMenu );
186 QAction* li = new QAction(i18n("About"), QPixmap(), 0, 0, this); 187 QAction* li = new QAction(i18n("About"), QPixmap(), 0, 0, this);
187 connect( li, SIGNAL( activated() ), SLOT( showAbout()) ); 188 connect( li, SIGNAL( activated() ), SLOT( showAbout()) );
188 li->addTo(helpMenu); 189 li->addTo(helpMenu);
189 li = new QAction(i18n("Licence"),QPixmap(), 0, 0, this); 190 li = new QAction(i18n("Licence"),QPixmap(), 0, 0, this);
190 connect( li, SIGNAL( activated() ), SLOT( showLicence()) ); 191 connect( li, SIGNAL( activated() ), SLOT( showLicence()) );
191 li->addTo(helpMenu); 192 li->addTo(helpMenu);
192 li = new QAction(i18n("LibEtPan Licence"), QPixmap(), 0, 0, this); 193 li = new QAction(i18n("LibEtPan Licence"), QPixmap(), 0, 0, this);
193 connect( li, SIGNAL( activated() ), SLOT( showEtpanLicence()) ); 194 connect( li, SIGNAL( activated() ), SLOT( showEtpanLicence()) );
194 li->addTo(helpMenu); 195 li->addTo(helpMenu);
195 connect( codecMenu, SIGNAL( activated(int) ), this, SLOT( slotSetCodec( int )) ); 196 connect( codecMenu, SIGNAL( activated(int) ), this, SLOT( slotSetCodec( int )) );
196 slotSetCodec( KOPrefs::instance()->mCurrentCodec ); 197 slotSetCodec( KOPrefs::instance()->mCurrentCodec );
197#ifdef DESKTOP_VERSION 198#ifdef DESKTOP_VERSION
198 resize ( 640, 480 ); 199 resize ( 640, 480 );
199#endif 200#endif
200} 201}
201 202
202MainWindow::~MainWindow() 203MainWindow::~MainWindow()
203{ 204{
204} 205}
205 206
206void MainWindow::slotSetCodec( int codec ) 207void MainWindow::slotSetCodec( int codec )
207{ 208{
208 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, false ); 209 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, false );
209 //qDebug("codec %d ", codec); 210 //qDebug("codec %d ", codec);
210 KOPrefs::instance()->mCurrentCodec = codec; 211 KOPrefs::instance()->mCurrentCodec = codec;
211 KOPrefs::instance()->isDirty = true; 212 KOPrefs::instance()->isDirty = true;
212 QString name; 213 QString name;
213 switch ( codec ) { 214 switch ( codec ) {
214 case 0: 215 case 0:
215 name = "iso-8859-1"; 216 name = "iso-8859-1";
216 break; 217 break;
217 case 1: 218 case 1:
218 name = "iso-8859-5"; 219 name = "iso-8859-5";
219 break; 220 break;
220 case 2: 221 case 2:
221 name = "iso-8859-15"; 222 name = "iso-8859-15";
222 break; 223 break;
223 case 3: 224 case 3:
224 name = "big-5"; 225 name = "big-5";
225 break; 226 break;
226 case 4: 227 case 4:
227 name = "utf-8"; 228 name = "utf-8";
228 break; 229 break;
229 case 5: 230 case 5:
230 name = KOPrefs::instance()->mSendCodec.lower(); 231 name = KOPrefs::instance()->mSendCodec.lower();
231 break; 232 break;
232 } 233 }
233 KOPrefs::instance()->mCurrentCodeName = name ; 234 KOPrefs::instance()->mCurrentCodeName = name ;
234 codecMenu->changeItem ( 5, "Userdefined ("+KOPrefs::instance()->mSendCodec+")"); 235 codecMenu->changeItem ( 5, "Userdefined ("+KOPrefs::instance()->mSendCodec+")");
235 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, true ); 236 codecMenu->setItemChecked(KOPrefs::instance()->mCurrentCodec, true );
236} 237}
237void MainWindow::showLicence() 238void MainWindow::showLicence()
238{ 239{
239 KApplication::showLicence(); 240 KApplication::showLicence();
240} 241}
241void MainWindow::showAbout() 242void MainWindow::showAbout()
242{ 243{
243 QString version; 244 QString version;
244#include <../version> 245#include <../version>
245 246
246 QString cap = "About KOpieMail/Pi"; 247 QString cap = "About KOpieMail/Pi";
247 QString text =i18n("KOpieMail/Platform-independent\n") + 248 QString text =i18n("KOpieMail/Platform-independent\n") +
248 "(OM/Pi) " + version + " - " 249 "(OM/Pi) " + version + " - "
249 250
250#ifdef DESKTOP_VERSION 251#ifdef DESKTOP_VERSION
251 "Desktop Edition\n" 252 "Desktop Edition\n"
252#else 253#else
253 "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n" 254 "PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n"
254#endif 255#endif
255 "www.pi-sync.net\n\n" 256 "www.pi-sync.net\n\n"
256 257
257 258
258 259
259"Copyright (c) 2004 Lutz Rogowski <lutz@pi-sync.net>\n" 260"Copyright (c) 2004 Lutz Rogowski <lutz@pi-sync.net>\n"
260 "KOpieMail/Pi is based on Opie Mail\n" 261 "KOpieMail/Pi is based on Opie Mail\n"
261 "Copyright (c) Rajko Albrecht and the Opie team\n" 262 "Copyright (c) Rajko Albrecht and the Opie team\n"
262 "KOpieMail/Pi is licensed under the GPL\n" 263 "KOpieMail/Pi is licensed under the GPL\n"
263 "\n" 264 "\n"
264 "KOpieMail/Pi uses LibEtPan - a mail stuff library\n" 265 "KOpieMail/Pi uses LibEtPan - a mail stuff library\n"
265 "Copyright (C) 2001, 2002 - DINH Viet Hoa\n" 266 "Copyright (C) 2001, 2002 - DINH Viet Hoa\n"
266 "libEtPan has its own licence - see LibEtPan licence\n"; 267 "libEtPan has its own licence - see LibEtPan licence\n";
267 268
268 KApplication::showText( cap, text ); 269 KApplication::showText( cap, text );
269} 270}
270void MainWindow::showEtpanLicence() 271void MainWindow::showEtpanLicence()
271{ 272{
272 KApplication::showFile( "LibEtPan licence", "kdepim/kopiemail/COPYRIGHTlibetpan" ); 273 KApplication::showFile( "LibEtPan licence", "kdepim/kopiemail/COPYRIGHTlibetpan" );
273 274
274} 275}
275void MainWindow::appMessage(const QCString &, const QByteArray &) 276void MainWindow::appMessage(const QCString &, const QByteArray &)
276{ 277{
277 qDebug("appMessage implemented by subclass"); 278 qDebug("appMessage implemented by subclass");
278} 279}
279 280
280void MainWindow::slotAdjustLayout() { 281void MainWindow::slotAdjustLayout() {
281 282
282 /* 283 /*
283 QWidget *d = QApplication::desktop(); 284 QWidget *d = QApplication::desktop();
284 285
285 if ( d->width() < d->height() ) { 286 if ( d->width() < d->height() ) {
286 layout->setDirection( QBoxLayout::TopToBottom ); 287 layout->setDirection( QBoxLayout::TopToBottom );
287 } else { 288 } else {
288 layout->setDirection( QBoxLayout::LeftToRight ); 289 layout->setDirection( QBoxLayout::LeftToRight );
289 } 290 }
290 */ 291 */
291} 292}
292 293
293void MainWindow::slotAdjustColumns() 294void MainWindow::slotAdjustColumns()
294{ 295{
295 bool hidden = folderView->isHidden(); 296 bool hidden = folderView->isHidden();
296 if ( hidden ) folderView->show(); 297 if ( hidden ) folderView->show();
297 folderView->setColumnWidth( 0, folderView->visibleWidth() ); 298 folderView->setColumnWidth( 0, folderView->visibleWidth() );
298 if ( hidden ) folderView->hide(); 299 if ( hidden ) folderView->hide();
299 300
300 mailView->setColumnWidth( 0, 10 ); 301 mailView->setColumnWidth( 0, 10 );
301 mailView->setColumnWidth( 1, 100 ); 302 mailView->setColumnWidth( 1, 100 );
302 mailView->setColumnWidth( 2, 100 ); 303 mailView->setColumnWidth( 2, 100 );
303 mailView->setColumnWidth( 3, 50 ); 304 mailView->setColumnWidth( 3, 50 );
304 mailView->setColumnWidth( 4, 120 ); 305 mailView->setColumnWidth( 4, 120 );
305} 306}
306 307
307void MainWindow::slotEditSettings() 308void MainWindow::slotEditSettings()
308{ 309{
309} 310}
310 311
311void MainWindow::slotShowFolders( bool ) 312void MainWindow::slotShowFolders( bool )
312{ 313{
313 qDebug("not implemented: "); 314 qDebug("not implemented: ");
314} 315}
315 316
316void MainWindow::refreshMailView(const QValueList<RecMailP>&) 317void MainWindow::refreshMailView(const QValueList<RecMailP>&)
317{ 318{
318 qDebug("not implemented: "); 319 qDebug("not implemented: ");
319} 320}
320 321
321void MainWindow::mailLeftClicked(QListViewItem * ) 322void MainWindow::mailLeftClicked(QListViewItem * )
322{ 323{
323 qDebug("not implemented: "); 324 qDebug("not implemented: ");
324} 325}
325 326
326void MainWindow::displayMail() 327void MainWindow::displayMail()
327{ 328{
328 qDebug("not implemented: "); 329 qDebug("not implemented: ");
329} 330}
330 331
331void MainWindow::slotDeleteMail() 332void MainWindow::slotDeleteMail()
332{ 333{
333 qDebug("not implemented: "); 334 qDebug("not implemented: ");
334} 335}
335 336
336void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int ) 337void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int )
337{ 338{
338 qDebug("not implemented: "); 339 qDebug("not implemented: ");
339} 340}
340 341
341void MainWindow::slotSendQueued() 342void MainWindow::slotSendQueued()
342{ 343{
343 qDebug("not implemented: "); 344 qDebug("not implemented: ");
344} 345}
345 346
346void MainWindow::slotEditAccounts() 347void MainWindow::slotEditAccounts()
347{ 348{
348 qDebug("not implemented: "); 349 qDebug("not implemented: ");
349} 350}
350 351
351void MainWindow::slotComposeMail() 352void MainWindow::slotComposeMail()
352{ 353{
353 qDebug("not implemented: "); 354 qDebug("not implemented: ");
354} 355}