1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-08-13 17:03:48 -04:00

Merge commit '4.114' into issue-162-new

Conflicts:
	src/com/fsck/k9/K9.java
	src/com/fsck/k9/activity/MessageView.java

enabled isCopyCapable in src/com/fsck/k9/controller/MessagingController.java
This commit is contained in:
ashley willis 2012-09-11 01:09:08 -05:00
commit 5b772ef171
45 changed files with 4029 additions and 710 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="15012"
android:versionName="4.113" package="com.fsck.k9"
android:versionCode="15013"
android:versionName="4.114" package="com.fsck.k9"
>
<uses-sdk
android:minSdkVersion="7"
@ -281,7 +281,10 @@
android:name="com.fsck.k9.activity.AccessibleEmailContentActivity"
>
</activity>
<activity android:name="com.fsck.k9.activity.EmailAddressList"
android:configChanges="locale"
>
</activity>
<receiver android:name="com.fsck.k9.service.BootReceiver"
android:enabled="true"
>

View File

@ -1,11 +0,0 @@
<html>
<body bgcolor="white">
<table width="100%" height="100%">
<tr>
<td align="center" valign="middle">
<font color="gray">No text</font>
</td>
</tr>
</table>
</body>
</html>

View File

@ -1,17 +0,0 @@
<html>
<body bgcolor="white">
<table width="100%" height="100%">
<tr>
<td align="center" valign="middle">
<font color="gray">Loading...</font>
<br/>
<br/>
<br/>
<br/>
<br/>
<img src="loading.gif">
</td>
</tr>
</table>
</body>
</html>

View File

@ -1,18 +0,0 @@
<html>
<body>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus dui dui, luctus sit amet, hendrerit ac, blandit quis, diam. Duis libero velit, elementum id, mattis ut, fermentum aliquet, tortor. Maecenas tincidunt egestas pede. Integer sagittis ipsum ut lorem. Morbi egestas egestas sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis eget erat ac sem iaculis sollicitudin. Maecenas in velit id mauris cursus tincidunt. Sed ultrices elit in sapien ullamcorper imperdiet. Nunc viverra, lacus id varius elementum, nisl turpis lacinia tellus, sit amet viverra neque odio quis nisl. Quisque facilisis, ipsum non vulputate malesuada, leo augue elementum tortor, nec eleifend tellus lectus non massa.
<br/><br/>
Maecenas pulvinar rutrum risus. Phasellus mattis arcu sit amet neque. Aliquam sed quam at nulla laoreet pretium. Proin elit. Integer ullamcorper dolor a pede. Nam lobortis quam ut mauris. Pellentesque non mauris ut lacus hendrerit iaculis. In volutpat nulla et turpis. Fusce mollis. Aliquam sit amet tortor fermentum orci lacinia convallis. Donec tincidunt tortor sed erat sollicitudin gravida. In hac habitasse platea dictumst. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed pulvinar arcu consectetuer dolor. Nunc luctus aliquam leo. In hac habitasse platea dictumst. Praesent et mi sit amet ligula blandit hendrerit. Nam aliquam tincidunt est. Aliquam erat volutpat.
<br/><br/>
Curabitur augue. Fusce pulvinar nisi vitae diam. Donec dictum. Sed suscipit convallis magna. Ut hendrerit tortor in mauris. In at diam. Maecenas commodo. Aliquam erat volutpat. Nunc odio eros, vestibulum at, sodales id, congue et, risus. Curabitur feugiat blandit lacus. Nulla gravida placerat enim. Nunc turpis. Praesent malesuada.
<br/><br/>
Aenean quis erat. Vivamus non ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed metus magna, porta eu, ultricies vitae, vulputate et, urna. Sed pulvinar, massa at ultricies rhoncus, nunc eros dapibus felis, quis congue risus orci rhoncus nibh. Pellentesque quam ante, laoreet vitae, iaculis a, gravida in, nibh. In hac habitasse platea dictumst. Aliquam erat volutpat. Suspendisse augue neque, posuere eu, sollicitudin quis, sagittis et, massa. Maecenas varius sem sodales ipsum. Donec congue mi nec orci. Nam pede ipsum, varius sed, condimentum ac, rhoncus non, lorem. Integer vestibulum, neque vitae ornare euismod, mauris turpis congue massa, non venenatis arcu lorem eget metus. Sed sollicitudin, enim aliquam pharetra cursus, neque augue bibendum leo, vitae ullamcorper ante felis nec massa. Maecenas vitae urna. Proin tincidunt, urna eu sodales vulputate, nisl tellus pretium ligula, ut venenatis metus nulla eu lectus. Integer urna purus, sagittis ut, posuere sed, sagittis non, mauris. Nunc eros risus, lacinia sit amet, dictum in, faucibus quis, urna. Fusce dictum mattis enim. Vivamus luctus sagittis felis.
<br/><br/>
Fusce pulvinar, erat a facilisis congue, lacus libero imperdiet dui, nec luctus justo neque sit amet mauris. Praesent sodales. Sed sed nisl a arcu tempus placerat. Duis sagittis risus. Aliquam tristique. Ut a mi. Integer volutpat, turpis vitae lobortis blandit, lorem sapien suscipit arcu, sit amet dignissim felis mauris vitae ipsum. Sed elit. Mauris elementum, pede nec accumsan pretium, leo metus fringilla erat, at feugiat turpis arcu pretium urna. Morbi lorem tellus, commodo sed, convallis id, suscipit sed, leo. Donec egestas ultricies tellus. Curabitur sapien orci, interdum nec, molestie at, pharetra eu, magna. Duis pharetra orci sed felis posuere malesuada. Donec nec nisi non urna ultricies porttitor. Maecenas lectus. Sed dignissim malesuada justo. Nunc rutrum consectetuer nunc.
<img src="cid:23978198273">
more text
<img src="cid:12371982371">
more text
</body>
</html>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

View File

@ -20,6 +20,10 @@
<option name="RUN_PROCESS_RESOURCES_MAVEN_TASK" value="true" />
<option name="GENERATE_UNSIGNED_APK" value="false" />
<option name="CUSTOM_DEBUG_KEYSTORE_PATH" value="" />
<option name="PACK_TEST_CODE" value="false" />
<option name="RUN_PROGUARD" value="false" />
<option name="PROGUARD_CFG_PATH" value="/proguard.cfg" />
<resOverlayFolders />
</configuration>
</facet>
</component>
@ -99,7 +103,6 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" scope="PROVIDED" name="Android 2.3.1 Platform" level="application" />
</component>
</module>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>

View File

@ -0,0 +1,9 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:minHeight="?android:attr/listPreferredItemHeight"
/>

View File

@ -26,6 +26,20 @@
android:layout_weight="1"
android:src="@drawable/ic_button_delete"
/>
<ImageButton
android:id="@+id/batch_archive_button"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/ic_button_archive"
/>
<ImageButton
android:id="@+id/batch_move_button"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@drawable/ic_button_move"
/>
<ImageButton
android:id="@+id/batch_flag_button"
android:layout_width="0dip"

View File

@ -32,8 +32,9 @@
/>
<item
android:id="@+id/read_receipt"
android:alphabeticShortcut="r"
android:title="@string/read_receipt"
android:alphabeticShortcut="r"
android:title="@string/read_receipt"
android:icon="@drawable/ic_menu_reply_receipt"
/>
<item
android:id="@+id/add_attachment_image"

1167
res/values-el/strings.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,8 @@
<!-- ## This is draft. Send all your notes or suggestions to address given above. ## -->
<!-- ## ## -->
<!-- ## Latest update: (YYYY-MM-DD): 2010.07.03 ## -->
<!-- ## Modified by rabbbit, 2011.03.03 ## -->
<!-- ## Modified by rabbbit, 2011.03.03 ## -->
<!-- ## Updated by Błażej Jeżewski, 2012.04.10 ## -->
<!-- ## ## -->
<!-- #################################################################################### -->
@ -17,18 +18,18 @@
<string name="beta_app_name">K-9 Mail BETA</string>
<string name="app_authors">Google, The K-9 Dog Walkers.</string>
<!-- NEW: <string name="app_copyright_fmt">Copyright 2008-<xliff:g>%s</xliff:g> The K-9 Dog Walkers. Portions Copyright 2006-<xliff:g>%s</xliff:g> the Android Open Source Project.</string>-->
<!-- NEW: <string name="app_license">Licensed under the Apache License, Version 2.0.</string>-->
<string name="app_license">Wszelkie prawa zastrzeżone</string>
<string name="app_authors_fmt">Autorzy: <xliff:g id="app_authors">%s</xliff:g></string>
<string name="app_revision_fmt">Historia zmian: <xliff:g id="app_revision_url">%s</xliff:g></string>
<!-- NEW: <string name="app_libraries">We\'re using the following third-party libraries: <xliff:g id="app_libraries_list">%s</xliff:g></string>-->
<!-- NEW: <string name="app_emoji_icons">Emoji icons: <xliff:g id="app_emoji_icons_link">%s</xliff:g></string>-->
<string name="app_libraries">K-9 mail zawiera kod źródłowy: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_emoji_icons">Ikony Emoji: <xliff:g id="app_emoji_icons_link">%s</xliff:g></string>
<string name="read_attachment_label">Odczyt załączników</string>
<string name="read_attachment_desc">Zezwalaj tej aplikacji na czytanie załaczników z Twoich maili.</string>
<string name="read_messages_label">Odczytaj maile</string>
<string name="read_messages_desc">Zezwalaj tej aplikacji na czytanie Twoich maili</string>
<string name="delete_messages_label">Usuń emaile</string>
<string name="delete_messages_desc">Zezwalaj tej aplikacji na usuwanie Twoich maili.</string>
<string name="read_attachment_desc">Zezwalaj tej aplikacji na czytanie załaczników z Twoich wiadomości.</string>
<string name="read_messages_label">Odczytaj wiadomości</string>
<string name="read_messages_desc">Zezwalaj tej aplikacji na czytanie Twoich wiadomości</string>
<string name="delete_messages_label">Usuń wiadomości</string>
<string name="delete_messages_desc">Zezwalaj tej aplikacji na usuwanie Twoich wiadomości.</string>
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g></string>
<string name="accounts_title">Konta</string>
@ -39,17 +40,17 @@
<string name="message_list_title"><xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g> </string>
<string name="compose_title">Nie</string>
<string name="debug_title">Debug</string>
<string name="debug_title">Debuguj</string>
<string name="choose_folder_title">Wybierz folder</string>
<string name="choose_color_title">Wybierz kolor</string>
<string name="activity_header_format"><xliff:g id="activity_prefix">%s</xliff:g><xliff:g id="unread_count">%s</xliff:g><xliff:g id="operation">%s</xliff:g></string>
<string name="activity_unread_count">\u0020[<xliff:g id="unread_count">%d</xliff:g>]</string>
<string name="status_loading_account_folder">\u0020(Pobieram <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_loading_account_folder_headers">\u0020(Pobieranie nagłówków <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_sending_account">\u0020(Wysyłam <xliff:g id="account">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_processing_account">\u0020(Przetw. <xliff:g id="account">%s</xliff:g>:<xliff:g id="command">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_loading_account_folder">\u0020(Sprawdzam <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_loading_account_folder_headers">\u0020(Nagłówki: <xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_sending_account">\u0020(Wysyłam: <xliff:g id="account">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_processing_account">\u0020(Przetwarzam: <xliff:g id="account">%s</xliff:g>:<xliff:g id="command">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="folder_progress">\u0020<xliff:g id="completed">%s</xliff:g>/<xliff:g id="total">%s</xliff:g></string>
<string name="status_next_poll">\u0020(Sprawdzę o <xliff:g id="nexttime">%s</xliff:g>)</string>
@ -73,16 +74,18 @@
<string name="forward_action">Prześlij dalej</string>
<string name="move_action">Przenieś</string>
<string name="continue_action">Kontynuuj</string>
<string name="back_action">Cofnij</string>
<string name="done_action">Gotowe</string> <!-- Used to complete a multi-step process -->
<string name="remove_action">Skasuj</string>
<string name="discard_action">Usuń</string>
<string name="save_draft_action">Zapisz jako szkic</string>
<string name="retry_action">Ponów</string>
<string name="refresh_action">Odśwież</string>
<string name="check_mail_action">Pobierz</string>
<string name="check_mail_action">Sprawdź pocztę</string>
<string name="send_messages_action">Wyślij wiadomości</string>
<string name="list_folders_action">Lista folderów</string>
<string name="refresh_folders_action">Odswież listę</string>
<string name="refresh_folders_action">Odśwież listę</string>
<string name="filter_folders_action">Wyszukaj folder</string>
<string name="mark_all_as_read_action">Wszystkie jako przeczytane</string>
<string name="add_account_action">Dodaj konto</string>
<string name="compose_action">Napisz</string>
@ -100,36 +103,35 @@
<string name="back_to_accounts_action"></string>
<string name="back_to_folder_list_action"></string>
<string name="read_action">Otwórz</string>
<string name="mark_as_read_action">Ozn. jako przeczytane</string>
<string name="mark_as_read_action">Oznacz jako przeczytane</string>
<string name="send_alternate_action">Prześlij dalej (alternatywne)</string>
<string name="send_alternate_chooser_title">Wybierz nadawcę</string>
<string name="mark_all_as_read_dlg_title">Wszystkie jako przeczytane</string>
<string name="mark_all_as_read_dlg_instructions_fmt">Oznaczyć wszystkie wiadomości w \'<xliff:g id="folder">%s</xliff:g>\' jako przeczytane
(włączając wiadomości znajdujące się w folderze, które nie są wyświetlone w programie K-9)?</string>
<string name="mark_all_as_read_dlg_instructions_fmt">Oznaczyć wszystkie wiadomości w \'<xliff:g id="folder">%s</xliff:g>\' jako przeczytane (włączając wiadomości znajdujące się w folderze, które nie są wyświetlone w programie K-9)?</string>
<string name="flag_action">Dodaj gwiazdkę</string>
<string name="unflag_action">Usuń gwiazdkę</string>
<string name="copy_action">Skopiuj</string>
<string name="show_full_header_action">Pokaż pełne nagłówki</string>
<string name="hide_full_header_action">Ukryj pełne nagłówki</string>
<string name="select_text_action">Wybierz text</string>
<string name="select_text_action">Zaznacz tekst</string>
<string name="mark_as_unread_action">Jako nieprzeczytane</string>
<string name="move_to_action">Przenieś do</string>
<string name="folders_action">Foldery</string>
<string name="view_hide_details_action">Pokaż/Ukryj szczegóły</string>
<string name="view_hide_details_action">Pokaż/ukryj szczegóły</string>
<string name="add_cc_bcc_action">Dodaj DW/UDW</string>
<string name="edit_subject_action">Edytuj temat</string>
<!-- NEW: <string name="read_receipt">Read receipt</string>-->
<!-- NEW: <string name="read_receipt_enabled">Read receipt will be requested</string>-->
<!-- NEW: <string name="read_receipt_disabled">Read receipt will not be requested</string>-->
<string name="read_receipt">Powiadomienie o przeczytaniu</string>
<string name="read_receipt_enabled">Żadaj powiadomienia o przeczytaniu</string>
<string name="read_receipt_disabled">Nie wymagaj powiadomienia o przeczytaniu</string>
<string name="add_attachment_action">Dodaj załącznik</string>
<string name="add_attachment_action_image">Dodaj załącznik (Zdjęcie)</string>
<string name="add_attachment_action_video">Add załącznik (Film)</string>
<string name="add_attachment_action_video">Dodaj załącznik (Film)</string>
<string name="dump_settings_action">Zapisz ustawienia</string>
<string name="empty_trash_action">Opróżnij śmietnik</string>
<string name="expunge_action">Wyczyść</string> <!-- FIXME - probably-->
<string name="empty_trash_action">Opróżnij kosz</string>
<string name="expunge_action">Wyczyść</string>
<string name="clear_local_folder_action">Wyczyść wiadomości lokalne</string>
<string name="set_sort_action">Wybierz sortowanie</string>
<string name="reverse_sort_action">Sortuj malejąco</string>
@ -142,9 +144,9 @@
<string name="general_no_subject">(Brak tematu)</string> <!-- Shown in place of the subject when a message has no subject. Showing this in parentheses is customary. -->
<string name="general_no_date">Brak daty</string>
<string name="general_no_sender">Brak nadawcy</string>
<string name="status_loading">Poll <xliff:g id="progress">%s</xliff:g></string>
<string name="status_loading_folder">(Poll <xliff:g id="folder">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_loading_more">Wczytuję wiadomość\u2026</string>
<string name="status_loading">Sprawdzanie <xliff:g id="progress">%s</xliff:g></string>
<string name="status_loading_folder">(Sprawdzam <xliff:g id="folder">%s</xliff:g><xliff:g id="progress">%s</xliff:g>)</string>
<string name="status_loading_more">Wczytuję wiadomości…</string>
<string name="status_network_error">Błąd połączenia</string>
<string name="status_invalid_id_error">Nie znaleziono wiadomości</string>
<string name="status_error">Błąd</string> <!-- Used in Outbox when a message has failed to send -->
@ -180,17 +182,16 @@
<string name="notification_bg_title_separator">:</string>
<string name="special_mailbox_name_inbox">Odebrane</string>
<string name="special_mailbox_name_outbox">Outbox</string>
<string name="special_mailbox_name_outbox">Wychodzące</string>
<!-- The following mailbox names will be used if the user has not specified one from the server -->
<string name="special_mailbox_name_drafts">Drafts</string>
<string name="special_mailbox_name_trash">Trash</string>
<string name="special_mailbox_name_sent">Sent</string>
<string name="special_mailbox_name_drafts">Szablony</string>
<string name="special_mailbox_name_trash">Kosz</string>
<string name="special_mailbox_name_sent">Wysłane</string>
<string name="special_mailbox_name_archive">Archiwizuj</string>
<string name="special_mailbox_name_spam">Spam</string>
<!-- Mailbox names displayed to user -->
<string name="special_mailbox_name_drafts_fmt"><xliff:g id="folder">%s</xliff:g> (Szkice)</string>
<string name="special_mailbox_name_trash_fmt"><xliff:g id="folder">%s</xliff:g> (Śmietnik)</string>
<string name="special_mailbox_name_trash_fmt"><xliff:g id="folder">%s</xliff:g> (Usunięte)</string>
<string name="special_mailbox_name_sent_fmt"><xliff:g id="folder">%s</xliff:g> (Wysłane)</string>
<string name="special_mailbox_name_archive_fmt"><xliff:g id="folder">%s</xliff:g> (Archiwum)</string>
<string name="special_mailbox_name_spam_fmt"><xliff:g id="folder">%s</xliff:g> (Spam)</string>
@ -199,11 +200,11 @@
<string name="send_failure_body_abbrev">Dalsze informacje znajdziesz w folderze <xliff:g id="errorFolder">%s</xliff:g>.</string>
<string name="send_failure_body_fmt">K-9 napotkał na problemy podczas wysyłki niektórych wiadomości.
Niestety, z powodu natury problemu, K-9 nie jest w stanie ocenić czy wiadomość została wysłana
czy też nie (odbiorcy mogli ortrzymać kopie wysyłanych wiadomości).
czy też nie (odbiorcy mogli otrzymać kopie wysyłanych wiadomości).
\u000a\u000aWiadomości przy których ten problem wystąpił zostały oznaczone gwiazdką w folderze
poczty wychodzącej (Outbox). Jeśli usuniesz z nich gwiazdkę, K-9 spróbuje wysłac te wiadomości
raz jeszcze. Wciśnij i przytrzymaj folder Outbox a następnie wybierz "Wyślij wiadomości" aby
zainicjować kolejną próbę wysyłki.\u000A\u000a
poczty wychodzącej (Wychodzące). Jeśli usuniesz z nich gwiazdkę, K-9 spróbuje wysłac te wiadomości
raz jeszcze. Wciśnij i przytrzymaj folder Wychodzące a następnie wybierz Wyślij wiadomości, aby
zainicjować kolejną próbę wysyłki.\u000a\u000a
Folder <xliff:g id="errorFolder">%s</xliff:g> moze zawierać komunikaty błędów dot. tego problemu.</string>
<string name="alert_header">Alarm K-9</string>
@ -227,7 +228,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
\n * Zapisywanie załączników na kartę SD
\n * Opróźnianie folderu \"Trash\"
\n * Sortowanie wiadomości
\n * ... i wiele innych
\n * i wiele innych
\n
\nK-9 nie obsługuje darmowych kont Hotmail oraz, jak wiele innych programów pocztowych może być kapryśny przy połączeniach z serwerem Microsoft Exchange.
\n
@ -243,11 +244,11 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="debug_enable_sensitive_logging_title">Loguj poufne informacje</string>
<string name="debug_enable_sensitive_logging_summary">Logi mogą zawierać Twoje hasła</string>
<string name="message_header_mua">K-9 Mail dla Androida</string>
<string name="message_header_mua">K-9 Mail</string>
<string name="combined_inbox_title">Wszystkie maile</string>
<string name="combined_inbox_label">Recent messages from all accounts</string>
<string name="combined_inbox_list_title">All Mail Inbox</string> <!-- Inbox here should be the same as mailbox_name_inbox -->
<string name="combined_inbox_title">Wszystkie wiadomości</string>
<string name="combined_inbox_label">Ostatnie wiadomości ze wszystkich kont</string>
<string name="combined_inbox_list_title">Wszystkie odebrane</string>
<string name="message_list_title_fmt"><xliff:g id="account">%s</xliff:g>:<xliff:g id="folder">%s</xliff:g>
<xliff:g id="unread_count">%s</xliff:g>
@ -267,6 +268,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="message_compose_bcc_hint">UDW</string>
<string name="message_compose_subject_hint">Temat</string>
<string name="message_compose_content_hint">Treść wiadomości</string>
<string name="message_compose_signature_hint">Podpis</string>
<string name="message_compose_quote_header_separator">-------- Wiadomość oryginalna --------</string>
<string name="message_compose_quote_header_subject">Temat:</string>
<string name="message_compose_quote_header_send_date">Wysłane:</string>
@ -278,16 +280,21 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="message_compose_error_no_recipients">Musisz dodać co najmniej jednego odbiorcę.</string>
<string name="error_contact_address_not_found">Żaden adres email nie został znaleziony.</string>
<string name="message_compose_downloading_attachments_toast">Niektóre załączniki nie zostały pobrane. Zostaną pobrane automatycznie przed wysłaniem tej wiadomości.</string>
<string name="message_compose_attachments_skipped_toast">Niektóre załączniki nie mogą byc przesłane dalej ponieważ nie zostały wcześniej pobrane.</string>
<!-- NEW: <string name="message_compose_show_quoted_text_action">Quote message</string>-->
<string name="message_compose_attachments_skipped_toast">Niektóre załączniki nie mogą być przesłane dalej ponieważ nie zostały wcześniej pobrane.</string>
<string name="message_compose_show_quoted_text_action">Cytuj wiadomość</string>
<string name="message_compose_description_add_to">Dodaj odbiorcę (Do)</string>
<string name="message_compose_description_add_cc">Dodaj odbiorcę (DW)</string>
<string name="message_compose_description_add_bcc">Dodaj odbiorcę (UDW)</string>
<string name="message_compose_description_delete_quoted_text">Usuń cytowany tekst</string>
<string name="message_compose_description_edit_quoted_text">Edytuj cytowany tekst</string>
<string name="message_view_from_format">Od: <xliff:g id="name">%s</xliff:g> &lt;<xliff:g id="email">%s</xliff:g>&gt;</string>
<string name="message_to_label">Do:</string>
<string name="message_view_cc_label">DW:</string>
<string name="message_view_attachment_view_action">Otwórz</string>
<string name="message_view_attachment_download_action">Zapisz</string>
<string name="message_view_prev_action">\u25BC</string>
<string name="message_view_next_action">\u25B2</string>
<string name="message_view_prev_action"></string>
<string name="message_view_next_action"></string>
<string name="message_view_archive_action">Archiwizuj</string>
<string name="message_view_move_action">Przenieś</string>
<string name="message_view_spam_action">Spam</string>
@ -296,13 +303,16 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="message_view_status_attachment_not_saved">Zapisywanie załącznika na karcie SD nie powiodło się.</string>
<string name="message_view_show_pictures_instructions">Wybierz \"Wyświetl grafikę\" aby wyświetlić osadzoną w treści grafikę.</string>
<string name="message_view_show_pictures_action">Wyświetl grafikę</string>
<string name="message_view_fetching_attachment_toast">Pobieram załącznik...</string>
<string name="message_view_show_message_action">Pokaż wiadomość</string>
<string name="message_view_show_attachments_action">Pokaż załączniki</string>
<string name="message_view_show_more_attachments_action">Więcej…</string>
<string name="message_view_fetching_attachment_toast">Pobieram załącznik…</string>
<string name="message_view_no_viewer">Nie moge znaleźć programu do wyświetlenia pliku <xliff:g id="mimetype">%s</xliff:g>.</string>
<string name="message_view_download_remainder">Pobierz całą wiadomość</string>
<!-- NEW: <string name="message_view_downloading">Downloading…</string>-->
<!-- NOTE: The following message refers to strings with id 'account_setup_incoming_save_all_headers_label' and 'account_setup_incoming_title' -->
<string name="message_additional_headers_not_downloaded">Nie wszystkie nagłówki zostały pobrane lub zapisane. Wybierz \"Zapisuj nagłówki lokalnie\" w ustawieniach serwera poczty przychodzącej aby tę funcje aktywować</string>
<string name="message_additional_headers_not_downloaded">Nie wszystkie nagłówki zostały pobrane lub zapisane. Wybierz \"Zapisuj nagłówki lokalnie\" w ustawieniach serwera poczty przychodzącej, aby tę funcje aktywować</string>
<string name="message_no_additional_headers_available">Wszystkie nagłówki pobrano, niemniej nie znaleziono żadnych dodatkowych do wyświetlenia.</string>
<string name="message_additional_headers_retrieval_failed">Pobieranie nagłówkow nie powiodło się.</string>
@ -323,40 +333,51 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="message_delete_failed">Nie moge skasować wiadomości</string>
<string name="about_header"><xliff:g id="app_name">%s</xliff:g></string>
<string name="about_version">wersja <xliff:g id="version">%s</xliff:g></string>
<string name="about_version">Wersja <xliff:g id="version">%s</xliff:g></string>
<string name="global_settings_flag_label">Oznaczaj gwiazdkami</string>
<string name="global_settings_flag_summary">Gwiazka wskazuje oznakowane wiadomości</string>
<string name="global_settings_checkbox_label">Zaznaczanie wielu maili</string>
<string name="global_settings_checkbox_summary">Opcja zaznaczania dostępna zawsze w trybie wielokrotnego wyboru</string>
<string name="global_settings_touchable_label">Widok Touch-friendly</string>
<string name="global_settings_checkbox_label">Zaznaczanie wielu</string>
<string name="global_settings_checkbox_summary">Opcja zaznaczania wielu wiadomości dostępna zawsze w trybie wielokrotnego wyboru</string>
<string name="global_settings_touchable_label">Widok palco-przyjazny</string>
<string name="global_settings_touchable_summary">Lista z podglądem treści wiadomości</string>
<string name="global_settings_preview_lines_label">Podglądaj linie</string>
<string name="global_settings_show_correspondent_names_label">Pokazuj nazwiska korespondentów</string>
<string name="global_settings_show_correspondent_names_summary">Pokazuj nazwiska korespondentów zamiast ich adresów email</string>
<string name="global_settings_show_contact_name_label">Pokazuj nazwiska kontaktów</string>
<string name="global_settings_show_contact_name_summary">Użyj nazwisk odbiorców z kontaktów kiedy to możliwe</string>
<string name="global_settings_show_contact_name_label">Pokazuj nazwę kontaktu</string>
<string name="global_settings_show_contact_name_summary">Użyj nazw nadawców, jeżeli występują w Twojej książce kontaktowej</string>
<string name="global_settings_registered_name_color_label">Koloruj kontakty</string>
<string name="global_settings_registered_name_color_default">Nie koloruj nazwisk na liście kontaktów</string>
<string name="global_settings_registered_name_color_changed">Koloruj nazwiska na liście kontaktów</string>
<string name="global_settings_messageview_fixedwidth_label">Czcionka o stałej szer.</string>
<string name="global_settings_messageview_fixedwidth_summary">Użyj czcionki o stałej szerokości do wyświetlania maili tekstowych</string>
<string name="global_settings_messageview_fixedwidth_summary">Użyj czcionki o stałej szerokości do wyświetlania wiadomości tekstowych</string>
<string name="global_settings_messageview_return_to_list_label">Skasuj i wróć do listy</string>
<string name="global_settings_messageview_return_to_list_summary">Wraca do listy wiadomości po usunięciu danego maila</string>
<!-- NEW: <string name="global_settings_messageview_show_next_label">Show next message after delete</string>-->
<!-- NEW: <string name="global_settings_messageview_show_next_summary">Show next message by default after message deletion</string>-->
<string name="global_settings_messageview_return_to_list_summary">Wraca do listy wiadomości po usunięciu danej wiadomości</string>
<string name="global_settings_messageview_show_next_label">Pokaż następną wiadomość po usunięciu</string>
<string name="global_settings_messageview_show_next_summary">Pokaż domyślnie następną wiadomość po usunięciu</string>
<string name="global_settings_confirm_actions_title">Potwierdź akcje</string>
<string name="global_settings_confirm_actions_summary">Pokaż okno dialogowe kiedy wykonujesz wybrane akcje</string>
<string name="global_settings_confirm_actions_summary">Pokaż potwierdzające okno dialogowe, gdy wykonujesz wybrane akcje</string>
<string name="global_settings_confirm_action_archive">Archiwizuj</string>
<string name="global_settings_confirm_action_delete">Usuń (tylko widok wiadomości)</string>
<string name="global_settings_confirm_action_delete_starred">Usuń oznacz. gwiazkdą (tylko widok wiadomości)</string>
<string name="global_settings_confirm_action_spam">Spam</string>
<string name="global_settings_confirm_action_mark_all_as_read">Oznacz wszystkie jako przeczytane</string>
<string name="global_settings_confirm_action_send">Wyślij</string>
<string name="global_settings_privacy_mode_title">Powiadomienia ekranowe przy zablokowanym ekranie</string>
<string name="global_settings_privacy_mode_summary">Nie pokazuj tematu wiadomości w pasku powiadimień gdy ekran jest zablokowany</string>
<string name="global_settings_privacy_mode_summary">Nie pokazuj tematu wiadomości w pasku powiadomień, gdy ekran jest zablokowany</string>
<!-- NEW: <string name="global_settings_batch_buttons">Batch buttons</string>-->
<!-- NEW: <string name="global_settings_batch_buttons_summary">Configure message list batch buttons</string>-->
<!-- NEW: <string name="global_settings_mark_read">Mark read/unread</string>-->
<!-- NEW: <string name="global_settings_delete">Delete</string>-->
<!-- NEW: <string name="global_settings_archive">Move to archive</string>-->
<!-- NEW: <string name="global_settings_archive_disabled_reason">No archive folders.</string>-->
<!-- NEW: <string name="global_settings_move">Move</string>-->
<!-- NEW: <string name="global_settings_flag">Flag</string>-->
<!-- NEW: <string name="global_settings_unselect">Unselect</string>-->
<string name="quiet_time">Okres ciszy</string>
<string name="quiet_time_description">Wyłącz dzwonienie, wibracje i mruganie w nocy</string>
@ -374,20 +395,20 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_setup_basics_manual_setup_action">Ustaw ręcznie</string>
<string name="account_setup_check_settings_title"></string>
<string name="account_setup_check_settings_retr_info_msg">Pobieram informacje\u2026</string>
<string name="account_setup_check_settings_check_incoming_msg">Sprawdzam ustawienia serwera\u2026</string>
<string name="account_setup_check_settings_check_outgoing_msg">Sprawdzam ustawienia serwera\u2026</string>
<string name="account_setup_check_settings_authenticate">Autentykacja\u2026</string>
<string name="account_setup_check_settings_fetch">Pobieranie ustawień konta\u2026</string>
<string name="account_setup_check_settings_finishing_msg">Kończę\u2026</string>
<string name="account_setup_check_settings_canceling_msg">Przerywam\u2026</string>
<string name="account_setup_check_settings_retr_info_msg">Pobieram informacje</string>
<string name="account_setup_check_settings_check_incoming_msg">Sprawdzam ustawienia serwera</string>
<string name="account_setup_check_settings_check_outgoing_msg">Sprawdzam ustawienia serwera</string>
<string name="account_setup_check_settings_authenticate">Autentyfikacja…</string>
<string name="account_setup_check_settings_fetch">Pobieranie ustawień konta</string>
<string name="account_setup_check_settings_finishing_msg">Kończę</string>
<string name="account_setup_check_settings_canceling_msg">Przerywam</string>
<string name="account_setup_names_title">Prawie gotowe!</string>
<string name="account_setup_names_instructions">Ustawienia są już gotowe i maile są w drodze!</string>
<string name="account_setup_names_account_name_label">Wpisz nazwę (opcjonalną) tego konta:</string>
<string name="account_setup_names_user_name_label">Twoje imię i nazwisko (pojawi się w wysyłanych wiadomościach):</string>
<string name="account_setup_finished_toast">Konto skonfigurowane!\n\nPobieram wiadomości\u2026</string>
<string name="account_setup_finished_toast">Konto skonfigurowane!\n\nPobieram wiadomości</string>
<string name="account_setup_account_type_title">Rodzaj konta</string>
<string name="account_setup_account_type_instructions">Jakiego typu serwer obsługuje to konto?</string>
@ -421,8 +442,8 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_setup_incoming_wifi_label">Wi-Fi</string>
<string name="account_setup_incoming_other_label">Inne</string>
<string name="account_setup_incoming_save_all_headers_title">Pobieranie nagłówków wiadomości</string>
<string name="account_setup_incoming_save_all_headers_label">Zapisuj nagłówki lokalnie</string>
<string name="account_setup_incoming_save_all_headers_title">Pobieranie nagłówków</string>
<string name="account_setup_incoming_save_all_headers_label">Zapisuj nagłówki wiadomości lokalnie</string>
<string name="local_storage_provider_external_label">Pamięć zewnętrzna (karta SD)</string>
<string name="local_storage_provider_internal_label">Zwykła pamięc wewnętrzna</string>
@ -434,7 +455,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_setup_expunge_policy_on_poll">Podczas każdego pobrania</string>
<string name="account_setup_expunge_policy_manual">Tylko ręcznie</string>
<!-- NEW: <string name="account_setup_incoming_autodetect_namespace_label">Auto-detect IMAP namespace</string>-->
<string name="account_setup_incoming_autodetect_namespace_label">Wykrywaj automatycznie IMAP namespace</string>
<string name="account_setup_incoming_imap_path_prefix_label">Prefiks ścieżki IMAP</string>
<string name="drafts_folder_label">Szkice</string>
@ -449,12 +470,12 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_setup_incoming_webdav_path_prefix_label">Ścieżka WebDAV (Exchange)</string>
<string name="account_setup_incoming_webdav_path_prefix_hint">Opcjonalne</string>
<string name="account_setup_incoming_webdav_auth_path_label">Ścieżka autentykacji</string>
<string name="account_setup_incoming_webdav_auth_path_label">Ścieżka autentyfikacji</string>
<string name="account_setup_incoming_webdav_auth_path_hint">Opcjonalne</string>
<string name="account_setup_incoming_webdav_mailbox_path_label">Ścieżka Mailboxa</string>
<string name="account_setup_incoming_webdav_mailbox_path_hint">Opcjonalne</string>
<string name="account_setup_outgoing_title">Poczta wysyłana (SMTP)</string>
<string name="account_setup_outgoing_title">Poczta wychodząca (SMTP)</string>
<string name="account_setup_outgoing_smtp_server_label">Nazwa serwera SMTP</string>
<string name="account_setup_outgoing_port_label">Port</string>
<string name="account_setup_outgoing_security_label">Typ zabezpieczeń</string>
@ -464,8 +485,8 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_setup_outgoing_security_tls_label">TLS (zawsze)</string>
<string name="account_setup_outgoing_require_login_label">Serwer wymaga uwierzytelnienia</string>
<string name="account_setup_outgoing_username_label">Identyfikator</string>
<string name="account_setup_outgoing_password_label">Haslo</string>
<string name="account_setup_outgoing_authentication_label">Rodzaj autentykacji</string>
<string name="account_setup_outgoing_password_label">Hasło</string>
<string name="account_setup_outgoing_authentication_label">Rodzaj autentyfikacji</string>
<!-- The authentication strings below are for a planned (hopefully) change to the above username and password options -->
<string name="account_setup_outgoing_authentication_basic_label">Login i hasło</string>
<string name="account_setup_outgoing_authentication_basic_username_label">Identyfikator</string>
@ -482,7 +503,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="clear_action">Usuń wszystkie dane (niebezpieczne!)</string>
<string name="recreate_action">Odtwórz dane (ostatnia szansa!)</string>
<string name="account_setup_options_mail_check_frequency_label">Pobieranie maili</string>
<string name="account_setup_options_mail_check_frequency_label">Pobieranie wiadomości</string>
<!-- Frequency also used in account_settings_* -->
<string name="account_setup_options_mail_check_frequency_never">Nigdy</string>
<string name="account_setup_options_mail_check_frequency_1min">Co 1 minutę</string>
@ -499,8 +520,8 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="push_poll_on_connect_label">Pobieraj podczas połączeń Push</string> <!-- FIXME -->
<string name="account_setup_options_enable_push_label">Włącz obsługe Push mail dla tego konta</string>
<string name="account_setup_options_enable_push_summary">If your server supports it, new messages will appear instantly. This option can dramatically improve or hurt performance.</string> <!-- FIXME -->
<string name="idle_refresh_period_label">Odswież połączenie IDLE</string>
<string name="account_setup_options_enable_push_summary">Jeżeli Twój serwer obsługuje, nowe wiadomości pojawią się natychmiast. Ta opcja może dramatycznie obniżyć lub zwiększyć wydajność.</string>
<string name="idle_refresh_period_label">Odśwież połączenie IDLE</string>
<string name="idle_refresh_period_1min">Co 1 minutę</string>
<string name="idle_refresh_period_2min">Co 2 minuty</string>
<string name="idle_refresh_period_3min">co 3 minuty</string>
@ -511,7 +532,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="idle_refresh_period_48min">Co 48 minut</string>
<string name="idle_refresh_period_60min">Co 60 minut</string>
<string name="account_setup_options_default_label">Domyślnie wysyłaj maile z tego konta</string>
<string name="account_setup_options_default_label">Domyślnie wysyłaj wiadomości z tego konta</string>
<string name="account_setup_options_notify_label">Powiadamiaj o nowej poczcie</string>
<string name="account_setup_options_notify_sync_label">Powiadamiaj o sprawdzaniu konta</string>
@ -535,25 +556,27 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_setup_failed_dlg_edit_details_action">Popraw ustawienia</string>
<string name="account_setup_failed_dlg_continue_action">Kontynuuj</string>
<!-- NEW: <string name="account_settings_push_advanced_title">Advanced</string>-->
<string name="account_settings_push_advanced_title">Zaawansowane</string>
<string name="account_settings_title_fmt">Ustawienia ogólne</string>
<string name="account_settings_default">Konto domyślne</string>
<string name="account_settings_default_label">Konto domyślne</string>
<string name="account_settings_default_summary">Domyślnie wysyłaj maile z tego konta</string>
<string name="account_settings_default_summary">Domyślnie wysyłaj wiadomości z tego konta</string>
<string name="account_settings_notify_label">Nowe wiadomości</string>
<string name="account_settings_notify_sync_label">Synchronizacja</string>
<string name="account_settings_notify_sync_label">Synchronizacja konta</string>
<string name="account_settings_email_label">Twój adres email</string>
<string name="account_settings_notify_summary">Powiadomiaj na pasku statusu gdy jest nową wiadomość</string>
<string name="account_settings_notify_sync_summary">Powiadomiaj na pasku statusu o sprawdzaniu tego konta</string>
<string name="account_settings_show_combined_label">Pokaż łączony Inbox</string>
<string name="account_settings_notify_summary">Powiadomiaj na pasku statusu, gdy jest nowa wiadomość</string>
<string name="account_settings_notify_sync_summary">Powiadomiaj na pasku status, gdy przeprowadzasz sprawdzanie tego konta</string>
<string name="account_settings_show_combined_label">Pokaż łączoną Odbiorczą</string>
<string name="account_settings_notify_self_label">Moje wiadomości</string>
<string name="account_settings_notify_self_summary">Powiadamiaj o mailach wysłanych przeze mnie</string>
<string name="account_settings_notification_opens_unread_label">Notyfikacja otwiera nieprz. wiadomości</string> <!-- FIXME -->
<string name="account_settings_notification_opens_unread_summary">Notifikacja wyszukuje nieprz. wiadomości</string> <!-- FIXME -->
<string name="account_settings_notification_unread_count_label">Pokaż liczbę nieprzeczytanych</string>
<string name="account_settings_notification_unread_count_summary">Pokaż liczbę nieprzeczytanych wiadomości w pasku powiadomień.</string>
<string name="account_settings_notify_self_summary">Powiadamiaj również o wiadomościach, które sam wysłałem</string>
<string name="account_settings_notification_opens_unread_label">Nowe nieprzeczytane</string>
<string name="account_settings_notification_opens_unread_summary">Powiadomienie o nieprzeczytanych wiadomościach</string>
<string name="account_settings_notification_unread_count_label">Liczba nieprzeczytanych</string>
<string name="account_settings_notification_unread_count_summary">Pokaż liczbę nieprzeczytanych wiadomości w pasku powiadomień</string>
<string name="account_settings_mark_message_as_read_on_view_label">Oznacz jako przeczytane</string>
<string name="account_settings_mark_message_as_read_on_view_summary">Oznacz wiadomość jako przeczytaną przy otwieraniu</string>
<string name="account_settings_enable_move_buttons_label">Użyj przycisków refile </string> <!-- FIXME -->
<string name="account_settings_enable_move_buttons_label">Użyj przycisków refile</string>
<string name="account_settings_enable_move_buttons_summary">Pokaż przyciski Archiwum, Przenieś, Spam.</string>
<string name="account_settings_show_pictures_label">Zawsze pokazuj obrazki</string>
@ -563,25 +586,29 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_settings_composition">Tworzenie wiadomości</string>
<!-- NEW: <string name="account_settings_default_quoted_text_shown_label">Quote original message when replying</string>-->
<!-- NEW: <string name="account_settings_default_quoted_text_shown_summary">When replying to messages, the original message is in your reply.</string>-->
<string name="account_settings_default_quoted_text_shown_label">Cytuj oryginał</string>
<string name="account_settings_default_quoted_text_shown_summary">Gdy odpowiadasz tekst oryginalnej wiadomości zostanie cytowany</string>
<string name="account_settings_reply_after_quote_label">Odpowiadaj po cytowanym tekście</string>
<string name="account_settings_reply_after_quote_summary">Podczas odpowiadania, wiadomość oryginalna pojawi się nad Twoją odpowiedzią.</string>
<string name="account_settings_reply_after_quote_label">Cytat pod spodem</string>
<string name="account_settings_reply_after_quote_summary">Podczas odpowiadania, wiadomość oryginalna (cytowana) pojawi się nad Twoją odpowiedzią</string>
<string name="account_settings_strip_signature_label">Wycinaj podpis z tekstu</string>
<string name="account_settings_strip_signature_summary">Gdy odpowiadasz na wiadomość, cytowany tekst nie bedzie zawierał podpisu</string>
<string name="account_settings_message_format_label">Format wiadomości</string>
<string name="account_settings_message_format_text">Czysty tekst (bez obrazków i formatowania)</string>
<string name="account_settings_message_format_html">HTML (z obrazkami i formatowaniem)</string>
<string name="account_settings_message_format_auto">Automatycznie (czysty tekst, chyba że odpoiwadasz na wiadomość HTML)</string>
<!-- NEW: <string name="account_settings_message_read_receipt_label">Read receipt</string>-->
<!-- NEW: <string name="account_settings_message_read_receipt_summary">Always request a read receipt</string>-->
<string name="account_settings_message_read_receipt_label">Potwierdzenie przeczytania</string>
<string name="account_settings_message_read_receipt_summary">Zawsze wymagaj potwierdzenia o przeczytaniu</string>
<string name="account_settings_quote_style_label">Styl cytowania podczas odpowiedzi</string>
<string name="account_settings_quote_style_prefix">Prefix (jak Gmail, Pine)</string>
<string name="account_settings_quote_style_header">Nagłówek (jak Outlook, Yahoo!, Hotmail)</string>
<string name="account_settings_general_title">Ustawienia ogólne</string>
<string name="account_settings_display_prefs_title">Wyświetlacz</string>
<string name="account_settings_display_prefs_title">Wygląd</string>
<string name="account_settings_sync">Synchronizacja folderów</string>
<string name="account_settings_folders">Foldery</string>
<string name="account_settings_message_lists">Lista wiadomości</string>
@ -592,7 +619,9 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_settings_crypto_app_none">Bez</string>
<string name="account_settings_crypto_app_not_available">nie dostępny</string>
<string name="account_settings_crypto_auto_signature">Automatyczny podpis</string>
<string name="account_settings_crypto_auto_signature_summary">Użyj adresu email do zgadnięcia klucza podpisu.</string>
<string name="account_settings_crypto_auto_signature_summary">Użyj adresu email do zgadnięcia klucza podpisu</string>
<string name="account_settings_crypto_auto_encrypt">Automatyczne szyfrowanie</string>
<string name="account_settings_crypto_auto_encrypt_summary">Automatycznie używaj szyfrowania, gdy publiczny klucz pasuje do odbiorcy</string>
<string name="account_settings_mail_check_frequency_label">Sprawdzanie konta</string>
<string name="account_settings_second_class_check_frequency_label">Cykliczne sprawdzanie folderów klasy 2</string>
@ -607,7 +636,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_settings_mail_display_count_label">Liczba wiadomości</string>
<string name="account_settings_autodownload_message_size_label">Pobierz wiadomośći aż do</string>
<string name="account_settings_autodownload_message_size_label">Rozmiar pobieranych wiadomości</string>
<string name="account_settings_autodownload_message_size_1">1Kb</string>
<string name="account_settings_autodownload_message_size_2">2Kb</string>
<string name="account_settings_autodownload_message_size_4">4Kb</string>
@ -625,8 +654,8 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_settings_autodownload_message_size_any">dowolny rozmiar (bez limitu)</string>
<string name="account_settings_message_age_label">Synchronizuj nowsze niż</string>
<string name="account_settings_message_age_any">Wielki Wybuch</string>
<string name="account_settings_message_age_0">1 dzień</string>
<string name="account_settings_message_age_any">wszystkie</string>
<string name="account_settings_message_age_0">dzisiaj</string>
<string name="account_settings_message_age_1">2 dni</string>
<string name="account_settings_message_age_2">3 dni</string>
<string name="account_settings_message_age_7">ostatni tydzień</string>
@ -664,8 +693,8 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_settings_folder_target_mode_first_and_second_class">Foldery klasy 1 oraz 2</string>
<string name="account_settings_folder_target_mode_not_second_class">Wszystkich poza klasą 2</string>
<string name="account_settings_sync_remote_deletetions_label">Synchronizacja usunięć na serwerze</string>
<string name="account_settings_sync_remote_deletetions_summary">Remove messages when deleted on server</string>
<string name="account_settings_sync_remote_deletetions_label">Synchronizacja usunięć</string>
<string name="account_settings_sync_remote_deletetions_summary">Usuwaj wiadomości również z serwera poczty</string>
<string name="folder_settings_title">Ustawienia folderu</string>
@ -691,7 +720,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_settings_incoming_label">Poczta przychodząca</string>
<string name="account_settings_incoming_summary">Ustawienia serwera poczty przychodzącej</string>
<string name="account_settings_outgoing_label">Poczta wysyłana</string>
<string name="account_settings_outgoing_label">Poczta wychodząca</string>
<string name="account_settings_outgoing_summary">Ustawienia serwera poczty wychodzącej (SMTP)</string>
<string name="account_settings_add_account_label">Dodaj kolejne konto</string>
<string name="account_settings_description_label">Nazwa konta</string>
@ -699,7 +728,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="notifications_title">Powiadomienia</string>
<string name="account_settings_ring_summary">Odtwórz dzwięk, gdy są nowe wiadomości</string>
<string name="account_settings_vibrate_enable">Wibracja</string>
<string name="account_settings_vibrate_summary">Wibruj gdy są nowe wiadomości</string>
<string name="account_settings_vibrate_summary">Wibruj, gdy są nowe wiadomości</string>
<string name="account_settings_vibrate_pattern_label">Schematy wibracji</string>
<string name="account_settings_vibrate_pattern_default">Domyślny</string>
<string name="account_settings_vibrate_pattern_1">Schemat 1</string>
@ -752,14 +781,14 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="account_settings_signature_label">Sygnatura</string>
<string name="account_settings_signature_summary">Dodawaj sygnaturę do każdej wysyłanej wiadomości</string>
<string name="default_signature">-- \nWysłane z Androida za pomocą K-9 Mail. Prosze wybaczyć lakoniczność.</string>
<string name="default_signature">-- \nWysłane za pomocą mojego telefonu Android.</string>
<string name="default_identity_description">Tożsamość domyślna</string>
<string name="choose_identity">Wybierz tożsamość</string>
<string name="choose_identity_title">Wybierz tożsamość</string>
<string name="choose_account_title">Wybierz konto/tożsamość</string>
<string name="send_as">Wyślij jako</string>
<string name="no_identities">Przejdź do "Ustawienia Konta" -&gt; "Tożsamości" aby utworzyć tożsamość</string>
<string name="no_identities">Przejdź do Ustawienia Konta -&gt; Tożsamości, aby utworzyć tożsamość</string>
<string name="no_removable_identity">Nie możesz usunąć jedynej tożsamości</string>
<string name="identity_has_no_email">Nie możesz użyć tożsamości bez podanego adresu email</string>
<string name="identity_will_not_be_saved">Wybór tożsamości oraz zmiany w sygnaturze nie będą zapisane z kopią roboczą</string>
@ -777,13 +806,14 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="sort_attach_first">Wiadomości z załącznikami jako pierwsze</string>
<string name="sort_unattached_first">Wiadomości bez załączników jako pierwsze</string>
<string name="sort_by">Sortowanie...</string>
<string name="sort_by_date">Po dacie</string>
<string name="sort_by_sender">Po nadawcy</string>
<string name="sort_by_subject">Po temacie</string>
<string name="sort_by_flag">Po gwiazdkach</string>
<string name="sort_by">Sortuj wg…</string>
<string name="sort_by_date">Daty</string>
<string name="sort_by_arrival">Daty otrzymania</string>
<string name="sort_by_sender">Nadawcy</string>
<string name="sort_by_subject">Tematu</string>
<string name="sort_by_flag">Gwiazdek</string>
<string name="sort_by_unread">Przeczytane/nieprzeczytane</string>
<string name="sort_by_attach">Po załącznikach</string>
<string name="sort_by_attach">Załącznikach</string>
<string name="message_web_view_error">%s</string>
<string name="account_delete_dlg_title">Usuwanie</string>
@ -801,31 +831,55 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
nie masz płatnego konta typu \"Plus\". W takim przypadku musisz z poczty
korzystać w dotychczasowy sposób, za pośrednictwem przeglądarki.</string>
<string name="provider_note_yahoojp">Jeśli chcesz uzywać POP3 dla tego dostawcy, powinieneś zezwolić na użycie POP3 na stronie ustawień poczty Yahoo.</string>
<!-- NEW: <string name="provider_note_naver">If you would like to use IMAP or POP3 for this provider, You should permit to use IMAP or POP3 on Naver mail settings page.</string>-->
<!-- NEW: <string name="provider_note_hanmail">If you would like to use IMAP or POP3 for this provider, You should permit to use IMAP or POP3 on Hanmail(Daum) mail settings page.</string>-->
<!-- NEW: <string name="provider_note_paran">If you would like to use IMAP or POP3 for this provider, You should permit to use IMAP or POP3 on Paran mail settings page.</string>-->
<!-- NEW: <string name="provider_note_nate">If you would like to use IMAP or POP3 for this provider, You should permit to use IMAP or POP3 on Nate mail settings page.</string>-->
<string name="provider_note_auonejp">Jeśli chcesz uzywać IMAP lub POP3 dla tego dostawcy, powinieneś zezwolić na użycie IMAP lub POP3 na stronie ustawień poczty Au one.</string>
<string name="provider_note_naver">Jeśli chcesz uzywać IMAP lub POP3 dla tego dostawcy, powinieneś zezwolić na użycie IMAP lub POP3 na stronie ustawień poczty Naver.</string>
<string name="provider_note_hanmail">Jeśli chcesz uzywać IMAP lub POP3 dla tego dostawcy, powinieneś zezwolić na użycie IMAP lub POP3 na stronie ustawień poczty Hanmail(Daum).</string>
<string name="provider_note_paran">Jeśli chcesz uzywać IMAP lub POP3 dla tego dostawcy, powinieneś zezwolić na użycie IMAP lub POP3 na stronie ustawień pocztyParan.</string>
<string name="provider_note_nate">Jeśli chcesz uzywać IMAP lub POP3 dla tego dostawcy, powinieneś zezwolić na użycie IMAP lub POP3 na stronie ustawień poczty Nate.</string>
<string name="account_setup_failed_dlg_invalid_certificate_title">Nieznany certyfikat</string>
<string name="account_setup_failed_dlg_invalid_certificate_accept">Akceptuj</string>
<string name="account_setup_failed_dlg_invalid_certificate_reject">Odrzuć</string>
<string name="message_help_key">Del lub D - Usuń\u000AR -
Odpowiedz\u000AA - Odp. wszystim\u000AF - Prześlij dalej\u000AJ lub P - Poprzednia
wiadomość\u000AK, N - Następna wiadomość\u000AM - Przenieś\u000AY - Skopiuj\u000AZ - Pomniejsz\u000AShift-Z -
Powiększ\u000aG - Gwiazdka</string>
<string name="message_list_help_key">Del lub D - Usuń\u000AR -
Odpowiedz\u000AA - Odp. wszystkim\u000AC - Napisz\u000AF - Prześlij dalej\u000aM -
Przenieś\u000AY - Skopiuj\u000AG - Gwiazdka\u000AO - Typ sortowania\u000AI - Porządek sortowania\u000AQ
- Widok folderów\u000AS - Zaznacz/odznacz</string>
<string name="message_help_key">
Del lub D - Usuń\n
R - Odpowiedz\n
A - Odp. wszystim\n
F - Prześlij dalej\n
J lub P - Poprzednia wiadomość\n
K, N - Następna wiadomość\n
M - Przenieś\n
Y - Skopiuj\n
Z - Pomniejsz\n
Shift-Z - Powiększ\n
G - Gwiazdka
</string>
<string name="folder_list_help_key">
1 - Wyśw. tylko foldery 1szej klasy\u000A
2 - Wyśw. foldery 1szej i 2giej klasy\u000A
3 - Wyśw. wszystkie poza folderami 2giej klasy\u000A
4 - Wyświetl wszystkie foldery\u000A
Q - Lista kont\u000A
S - Edytuj ustawienia konta</string>
<string name="message_list_help_key">
Del lub D - Usuń\n
R - Odpowiedz\n
A - Odp. wszystkim\n
C - Napisz\n
F - Prześlij dalej\n
M - Przenieś\n
Y - Skopiuj\n
G - Gwiazdka\n
O - Typ sortowania\n
I - Porządek sortowania\n
Q - Widok folderów\n
S - Zaznacz/odznacz\n
</string>
<string name="folder_list_help_key">
1 - Wyśw. tylko foldery 1szej klasy\n
2 - Wyśw. foldery 1szej i 2giej klasy\n
3 - Wyśw. wszystkie poza folderami 2giej klasy\n
4 - Wyświetl wszystkie foldery\n
Q - Lista kont\n
S - Edytuj ustawienia konta
</string>
<string name="folder_list_filter_hint">Wpisz nazwę folderu</string>
<string name="folder_list_display_mode_label">Wyświetlanie folderów</string>
<string name="folder_list_display_mode_all">Wszystkie</string>
@ -840,7 +894,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="setting_theme_light">Jasna</string>
<string name="display_preferences">Ustawienia globalne</string>
<string name="global_preferences">Globalne</string>
<string name="debug_preferences">Debugging</string>
<string name="debug_preferences">Debugowanie</string>
<string name="privacy_preferences">Prywatność</string>
<string name="network_preferences">Sieć</string>
<string name="interaction_preferences">Interakcja</string>
@ -866,8 +920,10 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="no_message_seletected_toast">Nie wybrano wiadomości</string>
<string name="date_format_label">Format daty</string>
<!-- These are default values. DO NOT CHANGE. Entries copied there to keep my internal string validator quiet -->
<!--
The values of the date_format_* strings MUST be valid date format strings.
See Android SDK documentation for the class SimpleDateFormat.
-->
<string name="date_format_short">SHORT</string>
<string name="date_format_medium">MEDIUM</string>
<string name="date_format_common">dd-MMM-yyyy</string>
@ -903,8 +959,8 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="gestures_title">Gesty</string>
<string name="gestures_summary">Pozwól na sterowanie gestami</string>
<string name="compact_layouts_title">Wygląd kopaktowy</string>
<string name="compact_layouts_summary">Dopaduj wygląd, aby wyświetlać więcej na każdej stronie</string>
<string name="compact_layouts_title">Wygląd kompaktowy</string>
<string name="compact_layouts_summary">Dostosuj wygląd, aby wyświetlać więcej na stronie</string>
<string name="volume_navigation_title">Nawigacja przyciskiem głośności</string>
<string name="volume_navigation_summary">Przeskakuj między rzeczami używając przycisków głośności</string>
@ -914,31 +970,31 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="manage_back_title">Przycisk \"Cofnij\"</string>
<string name="manage_back_summary">Przycisk \"Cofnij\" zawsze cofa o jeden poziom wyżej</string>
<string name="start_integrated_inbox_title">Pokaż Zintegr. Inbox</string>
<string name="start_integrated_inbox_summary">Wyświetl \"Zintegrowany Inbox\" po uruchomieniu programu</string>
<string name="start_integrated_inbox_title">Pokaż zintegrowaną</string>
<string name="start_integrated_inbox_summary">Wyświetl \"Zintegrowana odbiorcza\" po uruchomieniu programu</string>
<string name="measure_accounts_title">Pokazuj rozmiary kont</string>
<string name="measure_accounts_summary">Wyłącz by przyspieszyć wyświetlanie</string>
<string name="measure_accounts_summary">Wyłącz, aby przyspieszyć wyświetlanie</string>
<string name="count_search_title">Zliczaj wyniki szukania</string>
<string name="count_search_summary">Wyłącz by przyspieszyć wyświetlanie</string>
<string name="count_search_summary">Wyłącz, aby przyspieszyć wyświetlanie</string>
<string name="hide_special_accounts_title">Ukryj konta specjalne</string>
<string name="hide_special_accounts_summary">Ukryj zunifikowaną skrzynkę odbiorczą i wszystkie konta wiadomości</string>
<string name="hide_special_accounts_summary">Ukryj zunifikowaną odbiorczą i wszystkie wiadomości</string>
<string name="search_title"><xliff:g id="search_name">%s</xliff:g> <xliff:g id="modifier">%s</xliff:g></string>
<string name="flagged_modifier"> - Z gwiazdka</string>
<string name="flagged_modifier"> - Z gwiazdką</string>
<string name="unread_modifier"> - Nieprzeczytane</string>
<string name="search_all_messages_title">Wszystkie wiadomości</string>
<string name="search_all_messages_detail">Wiadomości w przeszukiwalnych folderach</string>
<string name="integrated_inbox_title">Zintegrowany Inbox</string>
<string name="integrated_inbox_title">Zintegrowana odbiorcza</string>
<string name="integrated_inbox_detail">Nieprzeczytane wiadomości ze wszystkich kont</string>
<string name="tap_hint">Dotknij koperty lub gwiazdki by wyświetlić wiadomości nieprzeczytane lub oznaczone gwiazdką.</string>
<string name="tap_hint">Dotknij koperty lub gwiazdki, aby wyświetlić wiadomości nieprzeczytane lub oznaczone gwiazdką.</string>
<string name="folder_settings_include_in_integrated_inbox_label">Zintegruj</string>
<string name="folder_settings_include_in_integrated_inbox_label">Integruj</string>
<string name="folder_settings_include_in_integrated_inbox_summary">Pokazuj nieprzeczytane wiadomości w zintegrowanym widoku</string>
<string name="account_settings_searchable_label">Przeszukiwalne foldery</string>
@ -966,7 +1022,7 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="font_size_message_list_date">Data wiadomości</string>
<string name="font_size_message_list_preview">Pogdląd</string>
<string name="font_size_message_view">Wyświetlanie wiadomość</string>
<string name="font_size_message_view">Wiadomości</string>
<string name="font_size_message_view_sender">Nadawca</string>
<string name="font_size_message_view_to">Adresat (Do:)</string>
<string name="font_size_message_view_cc">Odbiorca kopii (DW:)</string>
@ -976,6 +1032,9 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="font_size_message_view_date">Data</string>
<string name="font_size_message_view_content">Treść wiadomości</string>
<string name="font_size_message_compose">Kompozycja wiadomości</string>
<string name="font_size_message_compose_input">Pole wprawadzania tekstu</string>
<string name="font_size_tiniest">Najdrobniejsza</string>
<string name="font_size_tiny">Drobna</string>
<string name="font_size_smaller">Mniejsza</string>
@ -1004,8 +1063,8 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="error_activity_not_found">Nie znaleiono odpowiedniej aplikacji.</string>
<string name="error_apg_version_not_supported">Zainstalowana wersja APG nie jest wspierana.</string>
<string name="btn_crypto_sign">Podpisz</string>
<string name="btn_encrypt">Zakoduj</string>
<string name="btn_decrypt">Zdekoduj</string>
<string name="btn_encrypt">Szyfruj</string>
<string name="btn_decrypt">Deszyfruj</string>
<string name="btn_verify">Potwiedź</string>
<string name="unknown_crypto_signature_user_id">&lt;nieznany&gt;</string>
<string name="key_id">id: %s</string>
@ -1017,6 +1076,15 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="save_or_discard_draft_message_dlg_title">Zapisać szkic?</string>
<string name="save_or_discard_draft_message_instructions_fmt">Zapisać czy porzucić wiadomość?</string>
<string name="confirm_discard_draft_message_title">Usunąć wiadomość?</string>
<string name="confirm_discard_draft_message">Czy na pewno chcesz usunąć tą wiadomość?</string>
<string name="refuse_to_save_draft_marked_encrypted_dlg_title">Odrzuć zapisywanie szablonów.</string>
<string name="refuse_to_save_draft_marked_encrypted_instructions_fmt">Odrzuć zapisywanie szablonów oznaczonych jako zaszyfrowane.</string>
<string name="continue_without_public_key_dlg_title">Kontynuować bez klucza publicznego?</string>
<string name="continue_without_public_key_instructions_fmt">Jeden lub wiele odbiorców nie ma zapisanego klucza publicznego. Kontynuować?</string>
<string name="charset_not_found">Nie można wyświetlić wiadomości, ponieważ kodowanie \"<xliff:g id="charset">%s</xliff:g>\" nie zostało znalezione.</string>
<string name="select_text_now">Wybierz tekst do skopiowania.</string>
@ -1028,80 +1096,103 @@ Witaj w K-9 Mail, darmowym programie pocztowym dla systemu Android. Najistotniej
<string name="dialog_confirm_spam_title">Potwierdź przeniesienie do spamu</string>
<plurals name="dialog_confirm_spam_message">
<item quantity="one">Na pewno przenieśc do spamu?</item>
<item quantity="other">Na pewno przenieśc do spamu?</item>
<!--
Translators:
Please review how to handle pluralization for your language at (1) and ajust
the <item> elements accordingly
Possible values for 'quantity': zero, one, two, few, many, other
(1) http://developer.android.com/guide/topics/resources/string-resource.html#Plurals
-->
<item quantity="one">Na pewno przenieść wiadomość do spamu?</item>
<item quantity="other">Na pewno przenieść <xliff:g id="message_count">%1$d</xliff:g> wiadomości do spamu?</item>
</plurals>
<string name="dialog_confirm_spam_confirm_button">Tak</string>
<string name="dialog_confirm_spam_cancel_button">Nie</string>
<string name="dialog_attachment_progress_title">Pobieranie załącznika</string>
<string name="debug_logging_enabled">Włączono logowanie debug\'u do logu Androida</string>
<string name="debug_logging_enabled">Loguj debug do systemowego logera</string>
<string name="messagelist_sent_to_me_sigil">»</string>
<string name="messagelist_sent_cc_me_sigil"></string>
<!-- NEW: <string name="error_unable_to_connect">Unable to connect.</string>-->
<string name="error_unable_to_connect">Błąd połączenia.</string>
<!-- NEW: <string name="import_export_action">Settings Import &amp; Export</string>-->
<!-- NEW: <string name="settings_export_account">Export account settings</string>-->
<!-- NEW: <string name="settings_export_all">Export settings and accounts</string>-->
<!-- NEW: <string name="settings_import_dialog_title">Import</string>-->
<!-- NEW: <string name="settings_export_dialog_title">Export</string>-->
<!-- NEW: <string name="settings_import">Import settings</string>-->
<!-- NEW: <string name="settings_import_selection">Import selection</string>-->
<!-- NEW: <string name="settings_import_global_settings">Global settings</string>-->
<!-- NEW: <string name="settings_exporting">Exporting settings...</string>-->
<!-- NEW: <string name="settings_importing">Importing settings...</string>-->
<!-- NEW: <string name="settings_import_scanning_file">Scanning file...</string>-->
<!-- NEW: <string name="settings_export_success">Saved exported settings to <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <string name="settings_import_global_settings_success">Imported global settings from <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <string name="settings_import_success">Imported <xliff:g id="accounts">%s</xliff:g> from <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <plurals name="settings_import_success">
<item quantity="one">1 account</item>
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> accounts</item>
</plurals>-->
<!-- NEW: <string name="settings_export_failure">Failed to export settings</string>-->
<!-- NEW: <string name="settings_import_failure">Failed to import any settings from <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <string name="settings_export_success_header">Export succeeded</string>-->
<!-- NEW: <string name="settings_export_failed_header">Export failed</string>-->
<!-- NEW: <string name="settings_import_success_header">Import succeeded</string>-->
<!-- NEW: <string name="settings_import_failed_header">Import failed</string>-->
<!-- NEW: <string name="settings_import_activate_account_header">Activate account</string>-->
<!-- NEW: <string name="settings_import_activate_account_intro">To be able to use the account \"<xliff:g id="account">%s</xliff:g>\" you need to provide the <xliff:g id="server_passwords">%s.</xliff:g></string>-->
<!-- NEW: <plurals name="settings_import_server_passwords">
<item quantity="one">server password</item>
<item quantity="other">server passwords</item>
</plurals>-->
<!-- NEW: <string name="settings_import_incoming_server">Incoming server (<xliff:g id="hostname">%s</xliff:g>):</string>-->
<!-- NEW: <string name="settings_import_outgoing_server">Outgoing server (<xliff:g id="hostname">%s</xliff:g>):</string>-->
<!-- NEW: <plurals name="settings_import_setting_passwords">
<item quantity="one">Setting password...</item>
<item quantity="other">Setting passwords...</item>
</plurals>-->
<!-- NEW: <string name="settings_import_use_incoming_server_password">Use the incoming server password</string>-->
<!-- NEW: <string name="activate_account_action">Activate</string>-->
<string name="import_export_action">Kopia zapasowa</string>
<string name="settings_export_account">Ustawienia konta</string>
<string name="settings_export_all">Eksport</string>
<string name="settings_import_dialog_title">Importuj</string>
<string name="settings_export_dialog_title">Eksportuj</string>
<string name="settings_import">Import</string>
<string name="settings_import_selection">Zaznaczenie importu</string>
<string name="settings_import_global_settings">Ogólne ustawienia</string>
<string name="settings_exporting">Eksportowanie ustawień…</string>
<string name="settings_importing">Importowanie ustawień…</string>
<string name="settings_import_scanning_file">Skanowanie pliku…</string>
<string name="settings_export_success">Zapisano ustawienia do <xliff:g id="filename">%s</xliff:g></string>
<string name="settings_import_global_settings_success">Importowano ustawienia z <xliff:g id="filename">%s</xliff:g></string>
<string name="settings_import_success">Importowano <xliff:g id="accounts">%s</xliff:g> z <xliff:g id="filename">%s</xliff:g></string>
<plurals name="settings_import_success">
<item quantity="one">1 konto</item>
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> kont</item>
</plurals>
<string name="settings_export_failure">Błąd eksportu</string>
<string name="settings_import_failure">Błąd importu z <xliff:g id="filename">%s</xliff:g></string>
<string name="settings_export_success_header">Eksport udany</string>
<string name="settings_export_failed_header">Eksport nieudany</string>
<string name="settings_import_success_header">Import udany</string>
<string name="settings_import_failed_header">Import nieudany</string>
<string name="settings_import_activate_account_header">Aktywuj konto</string>
<string name="settings_import_activate_account_intro">Żeby użwyać konta \"<xliff:g id="account">%s</xliff:g>\" musisz zapewnić <xliff:g id="server_passwords">%s</xliff:g>.</string>
<plurals name="settings_import_server_passwords">
<item quantity="one">hasło serwera</item>
<item quantity="other">hasła serwera</item>
</plurals>
<string name="settings_import_incoming_server">Serwer przychodzący (<xliff:g id="hostname">%s</xliff:g>):</string>
<string name="settings_import_outgoing_server">Serwer wychodzący (<xliff:g id="hostname">%s</xliff:g>):</string>
<plurals name="settings_import_setting_passwords">
<item quantity="one">Ustawiam hasło...</item>
<item quantity="other">Ustawiam haseła...</item>
</plurals>
<string name="settings_import_use_incoming_server_password">Użyj hasła serwera przychodzącego</string>
<string name="activate_account_action">Aktywuj</string>
<!-- NEW: <string name="settings_unknown_version">Unable to handle file of version <xliff:g id="version">%s</xliff:g></string>-->
<string name="settings_unknown_version">Nie można użyć wersji <xliff:g id="version">%s</xliff:g></string>
<string name="account_unavailable">Konto \"<xliff:g id="account">%s</xliff:g>\" jest niedostępne; sprawdź pamięc</string>
<!-- NEW: <string name="settings_attachment_default_path">Save attachments to...</string>-->
<!-- NEW: <string name="attachment_save_title">Save attachment</string>-->
<!-- NEW: <string name="attachment_save_desc">No file browser found. Where would you like to save this attachment?</string>-->
<string name="settings_attachment_default_path">Zapisuj załączniki do…</string>
<string name="attachment_save_title">Zapisz załączniki</string>
<string name="attachment_save_desc">Brak przeglądarki plików. Chcesz zapisać ten załącznik?</string>
<!-- NEW: <string name="manage_accounts_move_up_action">Move up</string>-->
<!-- NEW: <string name="manage_accounts_move_down_action">Move down</string>-->
<!-- NEW: <string name="manage_accounts_moving_message">Moving account...</string>-->
<string name="manage_accounts_move_up_action">W górę</string>
<string name="manage_accounts_move_down_action">W dół</string>
<string name="manage_accounts_moving_message">przenoszenie konta…</string>
<string name="unread_widget_label">K-9 Mail nieprzeczytane</string>
<string name="unread_widget_select_account">Pokaż licznik nieprzeczytanych dla…</string>
<string name="import_dialog_error_title">Brakuje aplikacji zarządania plikami</string>
<string name="import_dialog_error_message">Brak aplikacji do obsługi plików importu. Zainastaluj jakąś aplikację z Google Play.</string>
<string name="open_market">Otwórz Google Play</string>
<string name="close">Zamknij</string>
<!-- NEW: <string name="webview_empty_message">No text</string>-->
<string name="webview_contextmenu_link_view_action">Otwórz podgląd</string>
<string name="webview_contextmenu_link_share_action">Udostępnij link</string>
<string name="webview_contextmenu_link_copy_action">Kopiuj link do schowka</string>
<string name="webview_contextmenu_link_clipboard_label">Link</string>
<string name="webview_contextmenu_image_title">Obraz</string>
<string name="webview_contextmenu_image_view_action">Pokaż obraz</string>
<string name="webview_contextmenu_image_save_action">Zapisz obraz</string>
<string name="webview_contextmenu_image_download_action">Pobierz obraz</string>
<string name="webview_contextmenu_image_copy_action">Kopiuj URL obrazu do schowka</string>
<string name="webview_contextmenu_image_clipboard_label">URL obrazu</string>
<string name="webview_contextmenu_phone_call_action">Wybierz numer</string>
<string name="webview_contextmenu_phone_save_action">Zapisz do kontaktów</string>
<string name="webview_contextmenu_phone_copy_action">Kopiuj numer telefonu do schowka</string>
<string name="webview_contextmenu_phone_clipboard_label">Numer telefonu</string>
<string name="webview_contextmenu_email_send_action">Wyślij wiadomość</string>
<string name="webview_contextmenu_email_save_action">Zapisz do kontaktów</string>
<string name="webview_contextmenu_email_copy_action">Kopiuj adres email do schowka</string>
<string name="webview_contextmenu_email_clipboard_label">Adres email</string>
<string name="image_saved_as">Obraz zapisany jako \"<xliff:g id="filename">%s</xliff:g>\"</string>
<string name="image_saving_failed">Błąd zapisu obrazu.</string>
</resources>

View File

@ -7,7 +7,7 @@
<string name="app_license">Лицензия Apache License, Version 2.0.</string>
<string name="app_authors_fmt">Авторы: <xliff:g id="app_authors">%s</xliff:g></string>
<string name="app_revision_fmt">Информация об изменениях: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries">Мы используем следующие тертьесторонние библиотеки: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_libraries">Мы используем следующие библиотеки третьих сторон: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="app_emoji_icons">Иконки настроения: <xliff:g id="app_emoji_icons_link">%s</xliff:g></string>
<string name="read_attachment_label">читать вложения электронной почты</string>
@ -108,9 +108,9 @@
<string name="view_hide_details_action">Показать/спрятать подробности</string>
<string name="add_cc_bcc_action">Добавить Копию/СК</string>
<string name="edit_subject_action">Редактировать тему</string>
<!-- NEW: <string name="read_receipt">Read receipt</string>-->
<!-- NEW: <string name="read_receipt_enabled">Read receipt will be requested</string>-->
<!-- NEW: <string name="read_receipt_disabled">Read receipt will not be requested</string>-->
<string name="read_receipt">Уведомление о прочтении</string>
<string name="read_receipt_enabled">Уведомление о прочтении будет запрошено</string>
<string name="read_receipt_disabled">Уведомление о прочтении не будет запрошено</string>
<string name="add_attachment_action">Добавить вложение</string>
<string name="add_attachment_action_image">Добавить вложение (Изображение)</string>
<string name="add_attachment_action_video">Добавить вложение (Видео)</string>
@ -324,8 +324,8 @@
<string name="global_settings_messageview_fixedwidth_summary">Использовать шрифт фиксированной ширины при показе плоского текста</string>
<string name="global_settings_messageview_return_to_list_label">Вернуться к списку после удаления</string>
<string name="global_settings_messageview_return_to_list_summary">Вернуться к списку сообщений после удаления сообщения</string>
<!-- NEW: <string name="global_settings_messageview_show_next_label">Show next message after delete</string>-->
<!-- NEW: <string name="global_settings_messageview_show_next_summary">Show next message by default after message deletion</string>-->
<string name="global_settings_messageview_show_next_label">Показать след. сообщение после удаления</string>
<string name="global_settings_messageview_show_next_summary">По умолчанию показывать след. сообщение после удаления</string>
<string name="global_settings_confirm_actions_title">Подтверждение действий</string>
<string name="global_settings_confirm_actions_summary">Показывать диалог при совершении действий</string>
@ -340,7 +340,7 @@
<string name="quiet_time">Время тишины</string>
<string name="quiet_time_description">Запретить сигнал, вибрацию, мигание в ночное время</string>
<string name="quiet_time_starts">Начинало времени тишины</string>
<string name="quiet_time_starts">Начало времени тишины</string>
<string name="quiet_time_ends">Конец времени тишины</string>
<string name="account_setup_basics_title">Установить новый адрес</string>
@ -414,7 +414,7 @@
<string name="account_setup_expunge_policy_on_poll">В ходе каждого запроса</string>
<string name="account_setup_expunge_policy_manual">Только вручную</string>
<!-- NEW: <string name="account_setup_incoming_autodetect_namespace_label">Auto-detect IMAP namespace</string>-->
<string name="account_setup_incoming_autodetect_namespace_label">Автоопределение области имен IMAP</string>
<string name="account_setup_incoming_imap_path_prefix_label">Префикс пути IMAP</string>
<string name="drafts_folder_label">Имя папки Черновиков</string>
@ -550,11 +550,11 @@
<string name="account_settings_reply_after_quote_summary">При ответе цитата будет выше ответа.</string>
<string name="account_settings_message_format_label">Формат сообщения</string>
<string name="account_settings_message_format_text">Плоский текст (изображения и форматирование не сохраняется)</string>
<string name="account_settings_message_format_text">Обычный текст (изображения и форматирование не сохраняется)</string>
<string name="account_settings_message_format_html">HTML (сохранять изображения и форматирование)</string>
<!-- NEW: <string name="account_settings_message_read_receipt_label">Read receipt</string>-->
<!-- NEW: <string name="account_settings_message_read_receipt_summary">Always request a read receipt</string>-->
<string name="account_settings_message_read_receipt_label">Уведомление о прочтении</string>
<string name="account_settings_message_read_receipt_summary">Всегда запрашивать уведомление о прочтении</string>
<string name="account_settings_quote_style_label">Стиль цитирования</string>
<string name="account_settings_quote_style_prefix">Префикс (например Gmail, Pine)</string>
@ -582,7 +582,7 @@
<string name="account_settings_color_label">Цвет учётной записи</string>
<string name="account_settings_color_summary">Выберите цвет учётной записи, используемый в папке и списке учётных записей</string>
<string name="account_settings_led_color_label">Notification LED color</string>
<string name="account_settings_led_color_label">Цвет светодиода для уведомления</string>
<string name="account_settings_led_color_summary">Выбрать цвет мигания для учётной записи</string>
<string name="account_settings_mail_display_count_label">Количество показываемых сообщений</string>
@ -680,13 +680,13 @@
<string name="account_settings_ring_summary">Звонок при новых сообщениях</string>
<string name="account_settings_vibrate_enable">Вибрация</string>
<string name="account_settings_vibrate_summary">Вибрация при новых сообщениях</string>
<string name="account_settings_vibrate_pattern_label">Паттерн вибрации</string>
<string name="account_settings_vibrate_pattern_label">Тип вибрации</string>
<string name="account_settings_vibrate_pattern_default">По умолчанию</string>
<string name="account_settings_vibrate_pattern_1">паттерн 1</string>
<string name="account_settings_vibrate_pattern_2">паттерн 2</string>
<string name="account_settings_vibrate_pattern_3">паттерн 3</string>
<string name="account_settings_vibrate_pattern_4">паттерн 4</string>
<string name="account_settings_vibrate_pattern_5">паттерн 5</string>
<string name="account_settings_vibrate_pattern_1">Вибрация 1</string>
<string name="account_settings_vibrate_pattern_2">Вибрация 2</string>
<string name="account_settings_vibrate_pattern_3">Вибрация 3</string>
<string name="account_settings_vibrate_pattern_4">Вибрация 4</string>
<string name="account_settings_vibrate_pattern_5">Вибрация 5</string>
<string name="account_settings_vibrate_times">Повторять вибрацию</string>
<string name="account_settings_ringtone">Выбор мелодии</string>
<string name="account_settings_led_label">Мигать</string>
@ -839,7 +839,7 @@
<string name="background_ops_never">Никогда</string>
<string name="background_ops_always">Всегда</string>
<string name="background_ops_enabled">Когда \'Фоновый режим\' включен</string>
<string name="background_ops_auto_sync">Когда \'Фоновые данные\' &amp; \'Автосинхронизация\' включены</string>
<string name="background_ops_auto_sync">Когда \'Фоновые данные\' и \'Автосинхронизация\' включены</string>
<string name="no_message_seletected_toast">Никаких сообщшний не выбранно</string>
@ -956,11 +956,11 @@
<string name="font_size_message_view_date">Дата</string>
<string name="font_size_message_view_content">Тело сообщения</string>
<string name="font_size_tiniest">самый крочшечный</string>
<string name="font_size_tiniest">Самый крочшечный</string>
<string name="font_size_tiny">Крошечный</string>
<string name="font_size_smaller">Еще меньше</string>
<string name="font_size_small">Маленький</string>
<string name="font_size_medium">средний</string>
<string name="font_size_medium">Средний</string>
<string name="font_size_large">Большой</string>
<string name="font_size_larger">Наибольший</string>
@ -1033,46 +1033,49 @@
<string name="messagelist_sent_cc_me_sigil"></string>
<string name="error_unable_to_connect">Не получается соединиться.</string>
<!-- NEW: <string name="import_export_action">Settings Import &amp; Export</string>-->
<!-- NEW: <string name="settings_export_account">Export account settings</string>-->
<!-- NEW: <string name="settings_export_all">Export settings and accounts</string>-->
<!-- NEW: <string name="settings_import_dialog_title">Import</string>-->
<!-- NEW: <string name="settings_export_dialog_title">Export</string>-->
<!-- NEW: <string name="settings_import">Import settings</string>-->
<!-- NEW: <string name="settings_import_selection">Import selection</string>-->
<!-- NEW: <string name="settings_import_global_settings">Global settings</string>-->
<!-- NEW: <string name="settings_exporting">Exporting settings...</string>-->
<!-- NEW: <string name="settings_importing">Importing settings...</string>-->
<!-- NEW: <string name="settings_import_scanning_file">Scanning file...</string>-->
<!-- NEW: <string name="settings_export_success">Saved exported settings to <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <string name="settings_import_global_settings_success">Imported global settings from <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <string name="settings_import_success">Imported <xliff:g id="accounts">%s</xliff:g> from <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <plurals name="settings_import_success">
<item quantity="one">1 account</item>
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> accounts</item>
</plurals>-->
<!-- NEW: <string name="settings_export_failure">Failed to export settings</string>-->
<!-- NEW: <string name="settings_import_failure">Failed to import any settings from <xliff:g id="filename">%s</xliff:g></string>-->
<!-- NEW: <string name="settings_export_success_header">Export succeeded</string>-->
<!-- NEW: <string name="settings_export_failed_header">Export failed</string>-->
<!-- NEW: <string name="settings_import_success_header">Import succeeded</string>-->
<!-- NEW: <string name="settings_import_failed_header">Import failed</string>-->
<!-- NEW: <string name="settings_import_activate_account_header">Activate account</string>-->
<!-- NEW: <string name="settings_import_activate_account_intro">To be able to use the account \"<xliff:g id="account">%s</xliff:g>\" you need to provide the <xliff:g id="server_passwords">%s.</xliff:g></string>-->
<!-- NEW: <plurals name="settings_import_server_passwords">
<item quantity="one">server password</item>
<item quantity="other">server passwords</item>
</plurals>-->
<!-- NEW: <string name="settings_import_incoming_server">Incoming server (<xliff:g id="hostname">%s</xliff:g>):</string>-->
<!-- NEW: <string name="settings_import_outgoing_server">Outgoing server (<xliff:g id="hostname">%s</xliff:g>):</string>-->
<!-- NEW: <plurals name="settings_import_setting_passwords">
<item quantity="one">Setting password...</item>
<item quantity="other">Setting passwords...</item>
</plurals>-->
<!-- NEW: <string name="settings_import_use_incoming_server_password">Use the incoming server password</string>-->
<!-- NEW: <string name="activate_account_action">Activate</string>-->
<string name="import_export_action">Импорт и экспорт настроек</string>
<string name="settings_export_account">Экспортировать настройки учетной записи</string>
<string name="settings_export_all">Экспортировать настройки и учетные записи</string>
<string name="settings_import_dialog_title">Импорт</string>
<string name="settings_export_dialog_title">Экспорт</string>
<string name="settings_import">Импортировать настройки</string>
<string name="settings_import_selection">Импортировать выбранное</string>
<string name="settings_import_global_settings">Глобальные настройки</string>
<string name="settings_exporting">Экспорт настроек...</string>
<string name="settings_importing">Импорт настроек...</string>
<string name="settings_import_scanning_file">Сканирование файла...</string>
<string name="settings_export_success">Настройки были экспортированы в <xliff:g id="filename">%s</xliff:g></string>
<string name="settings_import_global_settings_success">Глобальные настройки были импортированы из <xliff:g id="filename">%s</xliff:g></string>
<string name="settings_import_success">Импортирован <xliff:g id="accounts">%s</xliff:g> из <xliff:g id="filename">%s</xliff:g></string>
<plurals name="settings_import_success">
<item quantity="one">1 учетная запись</item>
<item quantity="few"><xliff:g id="numAccounts">%s</xliff:g> учетных записи</item>
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> учетных записей</item>
</plurals>
<string name="settings_export_failure">Не удалось экспортировать настройки</string>
<string name="settings_import_failure">Не удалось экспортировать настройки из <xliff:g id="filename">%s</xliff:g></string>
<string name="settings_export_success_header">Экспорт удался</string>
<string name="settings_export_failed_header">Экспорт не удался</string>
<string name="settings_import_success_header">Импорт удался</string>
<string name="settings_import_failed_header">Импорт не удался</string>
<string name="settings_import_activate_account_header">Активировать учетную запись</string>
<string name="settings_import_activate_account_intro">Чтобы использовать учетную запись \"<xliff:g id="account">%s</xliff:g>\", Вам необходимо указать <xliff:g id="server_passwords">%s.</xliff:g></string>
<plurals name="settings_import_server_passwords">
<item quantity="one">пароль</item>
<item quantity="few">пароля</item>
<item quantity="other">паролей</item>
</plurals>
<string name="settings_import_incoming_server">Сервер для входящей почты (<xliff:g id="hostname">%s</xliff:g>):</string>
<string name="settings_import_outgoing_server">Сервер для исходящей почты (<xliff:g id="hostname">%s</xliff:g>):</string>
<plurals name="settings_import_setting_passwords">
<item quantity="one">Установка пароля...</item>
<item quantity="other">Установка паролей...</item>
</plurals>
<string name="settings_import_use_incoming_server_password">Использовать пароль от сервера для входящей почты</string>
<string name="activate_account_action">Активировать</string>
<!-- NEW: <string name="settings_unknown_version">Unable to handle file of version <xliff:g id="version">%s</xliff:g></string>-->
<string name="settings_unknown_version">Невозможно определить версию файла <xliff:g id="version">%s</xliff:g></string>
<string name="account_unavailable">Учётная запись\"<xliff:g id="account">%s</xliff:g>\" недоступна; проверьте хранилище</string>
@ -1080,8 +1083,8 @@
<string name="attachment_save_title">Сохранить вложение</string>
<string name="attachment_save_desc">Не найден браузер файлов. Где бы вы хотели сохранить вложение?</string>
<!-- NEW: <string name="manage_accounts_move_up_action">Move up</string>-->
<!-- NEW: <string name="manage_accounts_move_down_action">Move down</string>-->
<!-- NEW: <string name="manage_accounts_moving_message">Moving account...</string>-->
<string name="manage_accounts_move_up_action">Переместить вверх</string>
<string name="manage_accounts_move_down_action">Переместить вниз</string>
<string name="manage_accounts_moving_message">Перемещение учетной записи...</string>
</resources>

View File

@ -308,8 +308,8 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin
<string name="message_view_show_more_attachments_action">More&#8230;</string>
<string name="message_view_fetching_attachment_toast">Fetching attachment.</string>
<string name="message_view_no_viewer">Unable to find viewer for <xliff:g id="mimetype">%s</xliff:g>.</string>
<string name="message_view_download_remainder">Download complete message</string>
<string name="message_view_downloading">Downloading…</string>
<!-- NOTE: The following message refers to strings with id 'account_setup_incoming_save_all_headers_label' and 'account_setup_incoming_title' -->
<string name="message_additional_headers_not_downloaded">Not all headers have been downloaded or saved. Select \"Save all headers locally\" in the account\'s incoming server settings to enable this for the future.</string>
@ -370,6 +370,16 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin
<string name="global_settings_privacy_mode_title">Lock-screen notifications</string>
<string name="global_settings_privacy_mode_summary">Don\'t display message subject in notification bar when system is locked</string>
<string name="global_settings_batch_buttons">Batch buttons</string>
<string name="global_settings_batch_buttons_summary">Configure message list batch buttons</string>
<string name="global_settings_mark_read">Mark read/unread</string>
<string name="global_settings_delete">Delete</string>
<string name="global_settings_archive">Move to archive</string>
<string name="global_settings_archive_disabled_reason">No archive folders.</string>
<string name="global_settings_move">Move</string>
<string name="global_settings_flag">Flag</string>
<string name="global_settings_unselect">Unselect</string>
<string name="quiet_time">Quiet Time</string>
<string name="quiet_time_description">Disable ringing, buzzing and flashing at night</string>
<string name="quiet_time_starts">Quiet Time starts</string>
@ -1161,6 +1171,8 @@ the import operation. Please install a file manager application from Android Mar
<string name="open_market">Open Market</string>
<string name="close">Close</string>
<string name="webview_empty_message">No text</string>
<string name="webview_contextmenu_link_view_action">Open for viewing</string>
<string name="webview_contextmenu_link_share_action">Share link</string>
<string name="webview_contextmenu_link_copy_action">Copy link to clipboard</string>

View File

@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.K9Dialog" parent="@android:Theme.Light">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@drawable/popup_background</item>
@ -6,8 +8,15 @@
<item name="android:windowIsFloating">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowContentOverlay">@drawable/panel_separator</item>
</style>
<!--
Fix a bug with AutoCompleteTextView
See https://code.google.com/p/android/issues/detail?id=5237
-->
<style name="Widget.K9.AutoCompleteTextView" parent="@android:style/Widget.AutoCompleteTextView">
<item name="android:textColor">@android:color/primary_text_light</item>
</style>
</resources>

12
res/values/themes.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.K9.Light" parent="android:Theme.Light">
<item name="android:autoCompleteTextViewStyle">@style/Widget.K9.AutoCompleteTextView</item>
</style>
<style name="Theme.K9.Dark" parent="@android:style/Theme">
<item name="android:autoCompleteTextViewStyle">@style/Widget.K9.AutoCompleteTextView</item>
</style>
</resources>

View File

@ -162,6 +162,7 @@
android:dependency="messagelist_show_contact_name"
/>
</PreferenceCategory>
<PreferenceCategory
@ -242,6 +243,50 @@
android:dialogTitle="@string/global_settings_confirm_actions_title"
android:positiveButtonText="@android:string/ok"
android:negativeButtonText="@android:string/cancel" />
<PreferenceScreen
android:title="@string/global_settings_batch_buttons"
android:summary="@string/global_settings_batch_buttons_summary"
android:key="batch_buttons_settings">
<CheckBoxPreference
android:persistent="false"
android:key="batch_buttons_mark_read"
android:title="@string/global_settings_mark_read"
/>
<CheckBoxPreference
android:persistent="false"
android:key="batch_buttons_delete"
android:title="@string/global_settings_delete"
/>
<CheckBoxPreference
android:persistent="false"
android:key="batch_buttons_archive"
android:title="@string/global_settings_archive"
/>
<CheckBoxPreference
android:persistent="false"
android:key="batch_buttons_move"
android:title="@string/global_settings_move"
/>
<CheckBoxPreference
android:persistent="false"
android:key="batch_buttons_flag"
android:title="@string/global_settings_flag"
/>
<CheckBoxPreference
android:persistent="false"
android:key="batch_buttons_unselect"
android:title="@string/global_settings_unselect"
/>
</PreferenceScreen>
</PreferenceScreen>
<PreferenceScreen

View File

@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@ -79,6 +80,40 @@ public class Account implements BaseAccount {
public static final String IDENTITY_EMAIL_KEY = "email";
public static final String IDENTITY_DESCRIPTION_KEY = "description";
public enum SortType {
SORT_DATE(R.string.sort_earliest_first, R.string.sort_latest_first, false),
SORT_ARRIVAL(R.string.sort_earliest_first, R.string.sort_latest_first, false),
SORT_SUBJECT(R.string.sort_subject_alpha, R.string.sort_subject_re_alpha, true),
SORT_SENDER(R.string.sort_sender_alpha, R.string.sort_sender_re_alpha, true),
SORT_UNREAD(R.string.sort_unread_first, R.string.sort_unread_last, true),
SORT_FLAGGED(R.string.sort_flagged_first, R.string.sort_flagged_last, true),
SORT_ATTACHMENT(R.string.sort_attach_first, R.string.sort_unattached_first, true);
private int ascendingToast;
private int descendingToast;
private boolean defaultAscending;
SortType(int ascending, int descending, boolean ndefaultAscending) {
ascendingToast = ascending;
descendingToast = descending;
defaultAscending = ndefaultAscending;
}
public int getToast(boolean ascending) {
if (ascending) {
return ascendingToast;
} else {
return descendingToast;
}
}
public boolean isDefaultAscending() {
return defaultAscending;
}
}
public static final SortType DEFAULT_SORT_TYPE = SortType.SORT_DATE;
public static final boolean DEFAULT_SORT_ASCENDING = false;
/**
* <pre>
@ -124,6 +159,8 @@ public class Account implements BaseAccount {
private boolean mAutoUploadOnMove;
private boolean mPushPollOnConnect;
private boolean mNotifySync;
private SortType mSortType;
private HashMap<SortType, Boolean> mSortAscending = new HashMap<SortType, Boolean>();
private ShowPictures mShowPictures;
private boolean mEnableMoveButtons;
private boolean mIsSignatureBeforeQuotedText;
@ -215,6 +252,8 @@ public class Account implements BaseAccount {
mFolderSyncMode = FolderMode.FIRST_CLASS;
mFolderPushMode = FolderMode.FIRST_CLASS;
mFolderTargetMode = FolderMode.NOT_SECOND_CLASS;
mSortType = DEFAULT_SORT_TYPE;
mSortAscending.put(DEFAULT_SORT_TYPE, DEFAULT_SORT_ASCENDING);
mShowPictures = ShowPictures.NEVER;
mEnableMoveButtons = false;
mIsSignatureBeforeQuotedText = false;
@ -338,6 +377,15 @@ public class Account implements BaseAccount {
(random.nextInt(0x70) * 0xffff) +
0xff000000);
try {
mSortType = SortType.valueOf(prefs.getString(mUuid + ".sortTypeEnum",
SortType.SORT_DATE.name()));
} catch (Exception e) {
mSortType = SortType.SORT_DATE;
}
mSortAscending.put(mSortType, prefs.getBoolean(mUuid + ".sortAscending", false));
try {
mShowPictures = ShowPictures.valueOf(prefs.getString(mUuid + ".showPicturesEnum",
ShowPictures.NEVER.name()));
@ -472,6 +520,8 @@ public class Account implements BaseAccount {
editor.remove(mUuid + ".messageFormatAuto");
editor.remove(mUuid + ".quoteStyle");
editor.remove(mUuid + ".quotePrefix");
editor.remove(mUuid + ".sortTypeEnum");
editor.remove(mUuid + ".sortAscending");
editor.remove(mUuid + ".showPicturesEnum");
editor.remove(mUuid + ".replyAfterQuote");
editor.remove(mUuid + ".stripSignature");
@ -606,6 +656,8 @@ public class Account implements BaseAccount {
editor.putString(mUuid + ".spamFolderName", mSpamFolderName);
editor.putString(mUuid + ".autoExpandFolderName", mAutoExpandFolderName);
editor.putInt(mUuid + ".accountNumber", mAccountNumber);
editor.putString(mUuid + ".sortTypeEnum", mSortType.name());
editor.putBoolean(mUuid + ".sortAscending", mSortAscending.get(mSortType));
editor.putString(mUuid + ".showPicturesEnum", mShowPictures.name());
editor.putBoolean(mUuid + ".enableMoveButtons", mEnableMoveButtons);
editor.putString(mUuid + ".folderDisplayMode", mFolderDisplayMode.name());
@ -984,6 +1036,14 @@ Log.d("ASH", "setTrashFolderName() attempting change of folder.setLocalOnly()");
mArchiveFolderName = archiveFolderName;
}
/**
* Checks if this account has an archive folder set.
* @return true if account has an archive folder set.
*/
public synchronized boolean hasArchiveFolder() {
return !K9.FOLDER_NONE.equalsIgnoreCase(mArchiveFolderName);
}
public synchronized String getSpamFolderName() {
return mSpamFolderName;
}
@ -1054,6 +1114,25 @@ Log.d("ASH", "setTrashFolderName() attempting change of folder.setLocalOnly()");
this.mNotifySync = showOngoing;
}
public synchronized SortType getSortType() {
return mSortType;
}
public synchronized void setSortType(SortType sortType) {
mSortType = sortType;
}
public synchronized boolean isSortAscending(SortType sortType) {
if (mSortAscending.get(sortType) == null) {
mSortAscending.put(sortType, sortType.isDefaultAscending());
}
return mSortAscending.get(sortType);
}
public synchronized void setSortAscending(SortType sortType, boolean sortAscending) {
mSortAscending.put(sortType, sortAscending);
}
public synchronized ShowPictures getShowPictures() {
return mShowPictures;
}
@ -1333,7 +1412,6 @@ Log.d("ASH", "setTrashFolderName() attempting change of folder.setLocalOnly()");
* Only to be called durin initial account-setup!<br/>
* Side-effect: changes {@link #mLocalStorageProviderId}.
*
* @param context
* @param newStorageProviderId
* Never <code>null</code>.
* @throws MessagingException

View File

@ -25,22 +25,11 @@ import android.widget.ResourceCursorAdapter;
import android.widget.TextView;
public class EmailAddressAdapter extends ResourceCursorAdapter {
private static EmailAddressAdapter sInstance;
public static EmailAddressAdapter getInstance(Context context) {
if (sInstance == null) {
sInstance = new EmailAddressAdapter(context);
}
return sInstance;
}
private final Contacts mContacts;
private EmailAddressAdapter(Context context) {
public EmailAddressAdapter(Context context) {
super(context, R.layout.recipient_dropdown_item, null);
mContacts = Contacts.getInstance(context);
mContacts = Contacts.getInstance(context.getApplicationContext());
}
@Override

View File

@ -183,8 +183,15 @@ public class K9 extends Application {
private static String mQuietTimeEnds = null;
private static boolean compactLayouts = false;
private static String mAttachmentDefaultPath = "";
private static boolean mShowAdvancedOptions;
private static boolean mBatchButtonsMarkRead = true;
private static boolean mBatchButtonsDelete = true;
private static boolean mBatchButtonsArchive = false;
private static boolean mBatchButtonsMove = false;
private static boolean mBatchButtonsFlag = true;
private static boolean mBatchButtonsUnselect = true;
private static boolean mShowAdvancedOptions;
private static boolean useGalleryBugWorkaround = false;
private static boolean galleryBuggy;
@ -436,6 +443,13 @@ public class K9 extends Application {
editor.putBoolean("messageViewReturnToList", mMessageViewReturnToList);
editor.putBoolean("messageViewShowNext", mMessageViewShowNext);
editor.putBoolean("batchButtonsMarkRead", mBatchButtonsMarkRead);
editor.putBoolean("batchButtonsDelete", mBatchButtonsDelete);
editor.putBoolean("batchButtonsArchive", mBatchButtonsArchive);
editor.putBoolean("batchButtonsMove", mBatchButtonsMove);
editor.putBoolean("batchButtonsFlag", mBatchButtonsFlag);
editor.putBoolean("batchButtonsUnselect", mBatchButtonsUnselect);
editor.putString("language", language);
editor.putInt("theme", theme);
editor.putBoolean("useGalleryBugWorkaround", useGalleryBugWorkaround);
@ -587,6 +601,13 @@ public class K9 extends Application {
mMessageViewReturnToList = sprefs.getBoolean("messageViewReturnToList", false);
mMessageViewShowNext = sprefs.getBoolean("messageViewShowNext", false);
mBatchButtonsMarkRead = sprefs.getBoolean("batchButtonsMarkRead", true);
mBatchButtonsDelete = sprefs.getBoolean("batchButtonsDelete", true);
mBatchButtonsArchive = sprefs.getBoolean("batchButtonsArchive", true);
mBatchButtonsMove = sprefs.getBoolean("batchButtonsMove", true);
mBatchButtonsFlag = sprefs.getBoolean("batchButtonsFlag", true);
mBatchButtonsUnselect = sprefs.getBoolean("batchButtonsUnselect", true);
useGalleryBugWorkaround = sprefs.getBoolean("useGalleryBugWorkaround", K9.isGalleryBuggy());
mConfirmDelete = sprefs.getBoolean("confirmDelete", false);
@ -679,7 +700,7 @@ public class K9 extends Application {
}
public static int getK9ThemeResourceId(int theme) {
return (theme == THEME_LIGHT) ? android.R.style.Theme_Light : android.R.style.Theme;
return (theme == THEME_LIGHT) ? R.style.Theme_K9_Light : R.style.Theme_K9_Dark;
}
public static int getK9ThemeResourceId() {
@ -1033,6 +1054,48 @@ public class K9 extends Application {
K9.compactLayouts = compactLayouts;
}
public static boolean batchButtonsMarkRead() {
return mBatchButtonsMarkRead;
}
public static void setBatchButtonsMarkRead(final boolean state) {
mBatchButtonsMarkRead = state;
}
public static boolean batchButtonsDelete() {
return mBatchButtonsDelete;
}
public static void setBatchButtonsDelete(final boolean state) {
mBatchButtonsDelete = state;
}
public static boolean batchButtonsArchive() {
return mBatchButtonsArchive;
}
public static void setBatchButtonsArchive(final boolean state) {
mBatchButtonsArchive = state;
}
public static boolean batchButtonsMove() {
return mBatchButtonsMove;
}
public static void setBatchButtonsMove(final boolean state) {
mBatchButtonsMove = state;
}
public static boolean batchButtonsFlag() {
return mBatchButtonsFlag;
}
public static void setBatchButtonsFlag(final boolean state) {
mBatchButtonsFlag = state;
}
public static boolean batchButtonsUnselect() {
return mBatchButtonsUnselect;
}
public static void setBatchButtonsUnselect(final boolean state) {
mBatchButtonsUnselect = state;
}
/**
* Check if this system contains a buggy Gallery 3D package.
*

View File

@ -0,0 +1,53 @@
package com.fsck.k9.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import com.fsck.k9.R;
import com.fsck.k9.helper.ContactItem;
public class EmailAddressList extends K9ListActivity implements OnItemClickListener {
public static final String EXTRA_CONTACT_ITEM = "contact";
public static final String EXTRA_EMAIL_ADDRESS = "emailAddress";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.email_address_list);
Intent i = getIntent();
ContactItem contact = (ContactItem) i.getSerializableExtra(EXTRA_CONTACT_ITEM);
if (contact == null) {
finish();
return;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.email_address_list_item, contact.emailAddresses);
ListView listView = getListView();
listView.setOnItemClickListener(this);
listView.setAdapter(adapter);
setTitle(contact.displayName);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String item = (String)parent.getItemAtPosition(position);
Toast.makeText(EmailAddressList.this, item, Toast.LENGTH_LONG).show();
Intent intent = new Intent();
intent.putExtra(EXTRA_EMAIL_ADDRESS, item);
setResult(RESULT_OK, intent);
finish();
}
}

View File

@ -24,6 +24,7 @@ import android.widget.AdapterView.OnItemClickListener;
import com.fsck.k9.*;
import com.fsck.k9.Account.FolderMode;
import com.fsck.k9.activity.FolderInfoHolder;
import com.fsck.k9.activity.FolderList.FolderListAdapter.FolderListFilter;
import com.fsck.k9.activity.setup.Prefs;
import com.fsck.k9.activity.setup.AccountSettings;
import com.fsck.k9.activity.setup.FolderSettings;
@ -56,8 +57,11 @@ import java.util.Map;
*/
public class FolderList extends K9ListActivity {
/*
* Constants for showDialog() etc.
*/
private static final int DIALOG_MARK_ALL_AS_READ = 1;
private static final int DIALOG_FIND_FOLDER = 2;
private static final String EXTRA_ACCOUNT = "account";
@ -420,6 +424,7 @@ public class FolderList extends K9ListActivity {
if (mAccount.getFolderPushMode() != FolderMode.NONE) {
MailService.actionRestartPushers(this, null);
}
mAdapter.getFilter().filter(null);
onRefresh(false);
}
@ -432,44 +437,7 @@ public class FolderList extends K9ListActivity {
* Filter {@link #mAdapter} with the user-input.
*/
private void onEnterFilter() {
final AlertDialog.Builder filterAlert = new AlertDialog.Builder(this);
final EditText input = new EditText(this);
input.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mAdapter.getFilter().filter(input.getText().toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
input.setHint(R.string.folder_list_filter_hint);
filterAlert.setView(input);
filterAlert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString().trim();
mAdapter.getFilter().filter(value);
}
});
filterAlert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
mAdapter.getFilter().filter("");
}
});
filterAlert.show();
showDialog(DIALOG_FIND_FOLDER);
}
/*
@ -925,19 +893,59 @@ public class FolderList extends K9ListActivity {
@Override
public Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_MARK_ALL_AS_READ:
return ConfirmationDialog.create(this, id,
R.string.mark_all_as_read_dlg_title,
getString(R.string.mark_all_as_read_dlg_instructions_fmt,
mSelectedContextFolder.displayName),
R.string.okay_action,
R.string.cancel_action,
new Runnable() {
@Override
public void run() {
markAllAsRead();
}
});
case DIALOG_MARK_ALL_AS_READ:
return ConfirmationDialog.create(this, id, R.string.mark_all_as_read_dlg_title,
getString(R.string.mark_all_as_read_dlg_instructions_fmt,
mSelectedContextFolder.displayName),
R.string.okay_action, R.string.cancel_action,
new Runnable() {
@Override
public void run() {
markAllAsRead();
}
});
case DIALOG_FIND_FOLDER: {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.filter_folders_action);
final EditText input = new EditText(this);
input.setId(R.id.filter_folders);
input.setHint(R.string.folder_list_filter_hint);
input.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mAdapter.getFilter().filter(input.getText());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) { /* not used */ }
@Override
public void afterTextChanged(Editable s) { /* not used */ }
});
builder.setView(input);
builder.setPositiveButton(getString(R.string.okay_action),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
mAdapter.getFilter().filter(value);
}
});
builder.setNegativeButton(getString(R.string.cancel_action),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
mAdapter.getFilter().filter(null);
}
});
return builder.create();
}
}
return super.onCreateDialog(id);
@ -946,14 +954,27 @@ public class FolderList extends K9ListActivity {
@Override
public void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case DIALOG_MARK_ALL_AS_READ:
((AlertDialog)dialog).setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt,
mSelectedContextFolder.displayName));
case DIALOG_MARK_ALL_AS_READ: {
AlertDialog alertDialog = (AlertDialog) dialog;
alertDialog.setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt,
mSelectedContextFolder.displayName));
break;
}
case DIALOG_FIND_FOLDER: {
AlertDialog alertDialog = (AlertDialog) dialog;
EditText input = (EditText) alertDialog.findViewById(R.id.filter_folders);
break;
// Populate the EditText with the current search term
FolderListFilter filter = (FolderListFilter) mAdapter.getFilter();
input.setText(filter.getSearchTerm());
default:
super.onPrepareDialog(id, dialog);
// Place the cursor at the end of the text
input.setSelection(input.getText().length());
break;
}
default: {
super.onPrepareDialog(id, dialog);
}
}
}
@ -1451,6 +1472,11 @@ public class FolderList extends K9ListActivity {
* @author Marcus@Wolschon.biz
*/
public class FolderListFilter extends Filter {
private CharSequence mSearchTerm;
public CharSequence getSearchTerm() {
return mSearchTerm;
}
/**
* Do the actual search.
@ -1460,6 +1486,7 @@ public class FolderList extends K9ListActivity {
*/
@Override
protected FilterResults performFiltering(CharSequence searchTerm) {
mSearchTerm = searchTerm;
FilterResults results = new FilterResults();
if ((searchTerm == null) || (searchTerm.length() == 0)) {

View File

@ -26,7 +26,6 @@ import android.content.pm.ActivityInfo;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
@ -73,6 +72,7 @@ import com.fsck.k9.controller.MessagingController;
import com.fsck.k9.controller.MessagingListener;
import com.fsck.k9.crypto.CryptoProvider;
import com.fsck.k9.crypto.PgpData;
import com.fsck.k9.helper.ContactItem;
import com.fsck.k9.helper.Contacts;
import com.fsck.k9.helper.Utility;
import com.fsck.k9.mail.Message.RecipientType;
@ -135,9 +135,12 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc
private static final int MSG_DISCARDED_DRAFT = 6;
private static final int ACTIVITY_REQUEST_PICK_ATTACHMENT = 1;
private static final int CONTACT_PICKER_TO = 2;
private static final int CONTACT_PICKER_CC = 3;
private static final int CONTACT_PICKER_BCC = 4;
private static final int CONTACT_PICKER_TO = 4;
private static final int CONTACT_PICKER_CC = 5;
private static final int CONTACT_PICKER_BCC = 6;
private static final int CONTACT_PICKER_TO2 = 7;
private static final int CONTACT_PICKER_CC2 = 8;
private static final int CONTACT_PICKER_BCC2 = 9;
private static final Account[] EMPTY_ACCOUNT_ARRAY = new Account[0];
@ -413,7 +416,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc
mContacts = Contacts.getInstance(MessageCompose.this);
mAddressAdapter = EmailAddressAdapter.getInstance(this);
mAddressAdapter = new EmailAddressAdapter(this);
mAddressValidator = new EmailAddressValidator();
mChooseIdentityButton = (Button) findViewById(R.id.identity);
@ -1791,11 +1794,33 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc
case CONTACT_PICKER_TO:
case CONTACT_PICKER_CC:
case CONTACT_PICKER_BCC:
String email = mContacts.getEmailFromContactPicker(data);
if (email.length() == 0) {
ContactItem contact = mContacts.extractInfoFromContactPickerIntent(data);
if (contact == null) {
Toast.makeText(this, getString(R.string.error_contact_address_not_found), Toast.LENGTH_LONG).show();
return;
}
if (contact.emailAddresses.size() > 1) {
Intent i = new Intent(this, EmailAddressList.class);
i.putExtra(EmailAddressList.EXTRA_CONTACT_ITEM, contact);
if (requestCode == CONTACT_PICKER_TO) {
startActivityForResult(i, CONTACT_PICKER_TO2);
} else if (requestCode == CONTACT_PICKER_CC) {
startActivityForResult(i, CONTACT_PICKER_CC2);
} else if (requestCode == CONTACT_PICKER_BCC) {
startActivityForResult(i, CONTACT_PICKER_BCC2);
}
return;
}
if (K9.DEBUG) {
List<String> emails = contact.emailAddresses;
for (int i = 0; i < emails.size(); i++) {
Log.v(K9.LOG_TAG, "email[" + i + "]: " + emails.get(i));
}
}
String email = contact.emailAddresses.get(0);
if (requestCode == CONTACT_PICKER_TO) {
addAddress(mToView, new Address(email, ""));
} else if (requestCode == CONTACT_PICKER_CC) {
@ -1808,6 +1833,18 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc
break;
case CONTACT_PICKER_TO2:
case CONTACT_PICKER_CC2:
case CONTACT_PICKER_BCC2:
String emailAddr = data.getStringExtra(EmailAddressList.EXTRA_EMAIL_ADDRESS);
if (requestCode == CONTACT_PICKER_TO2) {
addAddress(mToView, new Address(emailAddr, ""));
} else if (requestCode == CONTACT_PICKER_CC2) {
addAddress(mCcView, new Address(emailAddr, ""));
} else if (requestCode == CONTACT_PICKER_BCC2) {
addAddress(mBccView, new Address(emailAddr, ""));
}
break;
}
}

View File

@ -51,6 +51,7 @@ import android.widget.TextView;
import android.widget.Toast;
import com.fsck.k9.Account;
import com.fsck.k9.Account.SortType;
import com.fsck.k9.AccountStats;
import com.fsck.k9.BaseAccount;
import com.fsck.k9.FontSizes;
@ -63,7 +64,6 @@ import com.fsck.k9.activity.setup.AccountSettings;
import com.fsck.k9.activity.setup.FolderSettings;
import com.fsck.k9.activity.setup.Prefs;
import com.fsck.k9.controller.MessagingController;
import com.fsck.k9.controller.MessagingController.SORT_TYPE;
import com.fsck.k9.controller.MessagingListener;
import com.fsck.k9.helper.MessageHelper;
import com.fsck.k9.helper.Utility;
@ -233,21 +233,21 @@ public class MessageList
private static final String EXTRA_RETURN_FROM_MESSAGE_VIEW = "returnFromMessageView";
/**
* Maps a {@link SORT_TYPE} to a {@link Comparator} implementation.
* Maps a {@link SortType} to a {@link Comparator} implementation.
*/
private static final Map<SORT_TYPE, Comparator<MessageInfoHolder>> SORT_COMPARATORS;
private static final Map<SortType, Comparator<MessageInfoHolder>> SORT_COMPARATORS;
static {
// fill the mapping at class time loading
final Map<SORT_TYPE, Comparator<MessageInfoHolder>> map = new EnumMap<SORT_TYPE, Comparator<MessageInfoHolder>>(SORT_TYPE.class);
map.put(SORT_TYPE.SORT_ATTACHMENT, new AttachmentComparator());
map.put(SORT_TYPE.SORT_DATE, new DateComparator());
map.put(SORT_TYPE.SORT_ARRIVAL, new ArrivalComparator());
map.put(SORT_TYPE.SORT_FLAGGED, new FlaggedComparator());
map.put(SORT_TYPE.SORT_SENDER, new SenderComparator());
map.put(SORT_TYPE.SORT_SUBJECT, new SubjectComparator());
map.put(SORT_TYPE.SORT_UNREAD, new UnreadComparator());
final Map<SortType, Comparator<MessageInfoHolder>> map = new EnumMap<SortType, Comparator<MessageInfoHolder>>(SortType.class);
map.put(SortType.SORT_ATTACHMENT, new AttachmentComparator());
map.put(SortType.SORT_DATE, new DateComparator());
map.put(SortType.SORT_ARRIVAL, new ArrivalComparator());
map.put(SortType.SORT_FLAGGED, new FlaggedComparator());
map.put(SortType.SORT_SENDER, new SenderComparator());
map.put(SortType.SORT_SUBJECT, new SubjectComparator());
map.put(SortType.SORT_UNREAD, new UnreadComparator());
// make it immutable to prevent accidental alteration (content is immutable already)
SORT_COMPARATORS = Collections.unmodifiableMap(map);
@ -292,10 +292,9 @@ public class MessageList
private MessageListHandler mHandler = new MessageListHandler();
private SORT_TYPE sortType = SORT_TYPE.SORT_DATE;
private boolean sortAscending = true;
private boolean sortDateAscending = false;
private SortType mSortType = SortType.SORT_DATE;
private boolean mSortAscending = true;
private boolean mSortDateAscending = false;
private boolean mStars = true;
private boolean mCheckboxes = true;
@ -305,6 +304,8 @@ public class MessageList
private ImageButton mBatchReadButton;
private ImageButton mBatchDeleteButton;
private ImageButton mBatchFlagButton;
private ImageButton mBatchArchiveButton;
private ImageButton mBatchMoveButton;
private ImageButton mBatchDoneButton;
private FontSizes mFontSizes = K9.getFontSizes();
@ -460,8 +461,8 @@ public class MessageList
{
// add the specified comparator
final Comparator<MessageInfoHolder> comparator = SORT_COMPARATORS.get(sortType);
if (sortAscending) {
final Comparator<MessageInfoHolder> comparator = SORT_COMPARATORS.get(mSortType);
if (mSortAscending) {
chain.add(comparator);
} else {
chain.add(new ReverseComparator<MessageInfoHolder>(comparator));
@ -470,9 +471,9 @@ public class MessageList
{
// add the date comparator if not already specified
if (sortType != SORT_TYPE.SORT_DATE && sortType != SORT_TYPE.SORT_ARRIVAL) {
final Comparator<MessageInfoHolder> comparator = SORT_COMPARATORS.get(SORT_TYPE.SORT_DATE);
if (sortDateAscending) {
if (mSortType != SortType.SORT_DATE && mSortType != SortType.SORT_ARRIVAL) {
final Comparator<MessageInfoHolder> comparator = SORT_COMPARATORS.get(SortType.SORT_DATE);
if (mSortDateAscending) {
chain.add(comparator);
} else {
chain.add(new ReverseComparator<MessageInfoHolder>(comparator));
@ -827,15 +828,14 @@ public class MessageList
mStars = K9.messageListStars();
mCheckboxes = K9.messageListCheckboxes();
sortType = mController.getSortType();
sortAscending = mController.isSortAscending(sortType);
sortDateAscending = mController.isSortAscending(SORT_TYPE.SORT_DATE);
mController.addListener(mAdapter.mListener);
Account[] accountsWithNotification;
if (mAccount != null) {
accountsWithNotification = new Account[] { mAccount };
mSortType = mAccount.getSortType();
mSortAscending = mAccount.isSortAscending(mSortType);
mSortDateAscending = mAccount.isSortAscending(SortType.SORT_DATE);
} else {
Preferences preferences = Preferences.getPreferences(this);
accountsWithNotification = preferences.getAccounts();
@ -848,8 +848,14 @@ public class MessageList
if (mAdapter.messages.isEmpty()) {
if (mFolderName != null) {
mController.listLocalMessages(mAccount, mFolderName, mAdapter.mListener);
// Hide the archive button if we don't have an archive folder.
if (!mAccount.hasArchiveFolder()) {
mBatchArchiveButton.setVisibility(View.GONE);
}
} else if (mQueryString != null) {
mController.searchLocalMessages(mAccountUuids, mFolderNames, null, mQueryString, mIntegrate, mQueryFlags, mForbiddenFlags, mAdapter.mListener);
// Don't show the archive button if this is a search.
mBatchArchiveButton.setVisibility(View.GONE);
}
} else {
@ -910,10 +916,20 @@ public class MessageList
mBatchDeleteButton.setOnClickListener(this);
mBatchFlagButton = (ImageButton) findViewById(R.id.batch_flag_button);
mBatchFlagButton.setOnClickListener(this);
mBatchArchiveButton = (ImageButton) findViewById(R.id.batch_archive_button);
mBatchArchiveButton.setOnClickListener(this);
mBatchMoveButton = (ImageButton) findViewById(R.id.batch_move_button);
mBatchMoveButton.setOnClickListener(this);
mBatchDoneButton = (ImageButton) findViewById(R.id.batch_done_button);
mBatchDoneButton.setOnClickListener(this);
mBatchReadButton.setVisibility(K9.batchButtonsMarkRead() ? View.VISIBLE : View.GONE);
mBatchDeleteButton.setVisibility(K9.batchButtonsDelete() ? View.VISIBLE : View.GONE);
mBatchArchiveButton.setVisibility(K9.batchButtonsArchive() ? View.VISIBLE : View.GONE);
mBatchMoveButton.setVisibility(K9.batchButtonsMove() ? View.VISIBLE : View.GONE);
mBatchFlagButton.setVisibility(K9.batchButtonsFlag() ? View.VISIBLE : View.GONE);
mBatchDoneButton.setVisibility(K9.batchButtonsUnselect() ? View.VISIBLE : View.GONE);
// Gesture detection
gestureDetector = new GestureDetector(new MyGestureDetector(true));
gestureListener = new View.OnTouchListener() {
@ -1197,20 +1213,23 @@ public class MessageList
AccountSettings.actionSettings(this, mAccount);
}
private void changeSort(SORT_TYPE newSortType) {
if (sortType == newSortType) {
private void changeSort(SortType sortType) {
if (mSortType == sortType) {
onToggleSortAscending();
} else {
sortType = newSortType;
mController.setSortType(sortType);
sortAscending = mController.isSortAscending(sortType);
sortDateAscending = mController.isSortAscending(SORT_TYPE.SORT_DATE);
mSortType = sortType;
if (mAccount != null) {
mAccount.setSortType(mSortType);
mSortAscending = mAccount.isSortAscending(mSortType);
mSortDateAscending = mAccount.isSortAscending(SortType.SORT_DATE);
mAccount.save(Preferences.getPreferences(this));
}
reSort();
}
}
private void reSort() {
int toastString = sortType.getToast(sortAscending);
int toastString = mSortType.getToast(mSortAscending);
Toast toast = Toast.makeText(this, toastString, Toast.LENGTH_SHORT);
toast.show();
@ -1219,11 +1238,11 @@ public class MessageList
}
private void onCycleSort() {
SORT_TYPE[] sorts = SORT_TYPE.values();
SortType[] sorts = SortType.values();
int curIndex = 0;
for (int i = 0; i < sorts.length; i++) {
if (sorts[i] == sortType) {
if (sorts[i] == mSortType) {
curIndex = i;
break;
}
@ -1239,11 +1258,12 @@ public class MessageList
}
private void onToggleSortAscending() {
mController.setSortAscending(sortType, !sortAscending);
sortAscending = mController.isSortAscending(sortType);
sortDateAscending = mController.isSortAscending(SORT_TYPE.SORT_DATE);
mSortAscending = !mSortAscending;
if (mAccount != null) {
mAccount.setSortAscending(mSortType, mSortAscending);
mSortDateAscending = mAccount.isSortAscending(SortType.SORT_DATE);
mAccount.save(Preferences.getPreferences(this));
}
reSort();
}
@ -1454,31 +1474,31 @@ public class MessageList
return true;
}
case R.id.set_sort_date: {
changeSort(SORT_TYPE.SORT_DATE);
changeSort(SortType.SORT_DATE);
return true;
}
case R.id.set_sort_arrival: {
changeSort(SORT_TYPE.SORT_ARRIVAL);
changeSort(SortType.SORT_ARRIVAL);
return true;
}
case R.id.set_sort_subject: {
changeSort(SORT_TYPE.SORT_SUBJECT);
changeSort(SortType.SORT_SUBJECT);
return true;
}
case R.id.set_sort_sender: {
changeSort(SORT_TYPE.SORT_SENDER);
changeSort(SortType.SORT_SENDER);
return true;
}
case R.id.set_sort_flag: {
changeSort(SORT_TYPE.SORT_FLAGGED);
changeSort(SortType.SORT_FLAGGED);
return true;
}
case R.id.set_sort_unread: {
changeSort(SORT_TYPE.SORT_UNREAD);
changeSort(SortType.SORT_UNREAD);
return true;
}
case R.id.set_sort_attach: {
changeSort(SORT_TYPE.SORT_ATTACHMENT);
changeSort(SortType.SORT_ATTACHMENT);
return true;
}
case R.id.select_all:
@ -1641,7 +1661,7 @@ public class MessageList
mLocalOnly || !isExpungeCapable) {
menu.findItem(R.id.expunge).setVisible(false);
}
if (K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getArchiveFolderName())) {
if (!mAccount.hasArchiveFolder()) {
menu.findItem(R.id.batch_archive_op).setVisible(false);
}
if (K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getSpamFolderName())) {
@ -1852,9 +1872,10 @@ public class MessageList
Account account = message.message.getFolder().getAccount();
if (K9.FOLDER_NONE.equalsIgnoreCase(account.getArchiveFolderName())) {
if (!account.hasArchiveFolder()) {
menu.findItem(R.id.archive).setVisible(false);
}
if (K9.FOLDER_NONE.equalsIgnoreCase(account.getSpamFolderName())) {
menu.findItem(R.id.spam).setVisible(false);
}
@ -2573,8 +2594,6 @@ public class MessageList
}
});
}
static class FooterViewHolder {
@ -2634,6 +2653,18 @@ public class MessageList
newState = computeBatchDirection(false);
}
if (v == mBatchArchiveButton) {
final List<MessageInfoHolder> selection = getSelectionFromCheckboxes();
onArchive(selection);
return;
}
if (v == mBatchMoveButton) {
final List<MessageInfoHolder> selection = getSelectionFromCheckboxes();
onMove(selection);
return;
}
synchronized (mAdapter.messages) {
for (MessageInfoHolder holder : mAdapter.messages) {
if (holder.selected) {

View File

@ -447,13 +447,18 @@ public class MessageView extends K9Activity implements OnClickListener {
mDelete.setEnabled(true);
mNext.setEnabled(mNextMessage != null);
mPrevious.setEnabled(mPreviousMessage != null);
// Only enable the button if the Archive folder is not the current folder and not NONE.
mArchive.setEnabled(!mMessageReference.folderName.equals(mAccount.getArchiveFolderName()) &&
!K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getArchiveFolderName()));
// Only enable the button if the Spam folder is not the current folder and not NONE.
mSpam.setEnabled(!mMessageReference.folderName.equals(mAccount.getSpamFolderName()) &&
!K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getSpamFolderName()));
mMove.setEnabled(true);
// If moving isn't support at all, then all of them must be disabled anyway.
if (mController.isMoveCapable(mAccount)) {
// Only enable the button if they have an archive folder and it's not the current folder.
mArchive.setEnabled(!mMessageReference.folderName.equals(mAccount.getArchiveFolderName()) &&
!K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getArchiveFolderName()));
// Only enable the button if the Spam folder is not the current folder and not NONE.
mSpam.setEnabled(!mMessageReference.folderName.equals(mAccount.getSpamFolderName()) &&
!K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getSpamFolderName()));
mMove.setEnabled(true);
} else {
disableMoveButtons();
}
}
private void disableButtons() {
@ -848,6 +853,14 @@ public class MessageView extends K9Activity implements OnClickListener {
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.message_view_option, menu);
if (!mController.isCopyCapable(mAccount)) {
menu.findItem(R.id.copy).setVisible(false);
}
if (!mController.isMoveCapable(mAccount)) {
menu.findItem(R.id.move).setVisible(false);
menu.findItem(R.id.archive).setVisible(false);
menu.findItem(R.id.spam).setVisible(false);
}
if (K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getArchiveFolderName())) {
menu.findItem(R.id.archive).setVisible(false);
}
@ -959,7 +972,8 @@ public class MessageView extends K9Activity implements OnClickListener {
public void run() {
if (!clonedMessage.isSet(Flag.X_DOWNLOADED_FULL) &&
!clonedMessage.isSet(Flag.X_DOWNLOADED_PARTIAL)) {
mMessageView.loadBodyFromUrl("file:///android_asset/downloading.html");
String text = getString(R.string.message_view_downloading);
mMessageView.showStatusMessage(text);
}
mMessageView.setHeaders(clonedMessage, account);
mMessageView.setOnFlagListener(new OnClickListener() {
@ -1012,7 +1026,7 @@ public class MessageView extends K9Activity implements OnClickListener {
}
if ((MessageView.this.mMessage == null) ||
!MessageView.this.mMessage.isSet(Flag.X_DOWNLOADED_PARTIAL)) {
mMessageView.loadBodyFromUrl("file:///android_asset/empty.html");
mMessageView.showStatusMessage(getString(R.string.webview_empty_message));
}
}
});

View File

@ -19,6 +19,7 @@ import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.widget.Toast;
import com.fsck.k9.Account;
import com.fsck.k9.K9;
import com.fsck.k9.Preferences;
import com.fsck.k9.R;
@ -75,7 +76,12 @@ public class Prefs extends K9PreferenceActivity {
private static final String PREFERENCE_QUIET_TIME_ENABLED = "quiet_time_enabled";
private static final String PREFERENCE_QUIET_TIME_STARTS = "quiet_time_starts";
private static final String PREFERENCE_QUIET_TIME_ENDS = "quiet_time_ends";
private static final String PREFERENCE_BATCH_BUTTONS_MARK_READ = "batch_buttons_mark_read";
private static final String PREFERENCE_BATCH_BUTTONS_DELETE = "batch_buttons_delete";
private static final String PREFERENCE_BATCH_BUTTONS_ARCHIVE = "batch_buttons_archive";
private static final String PREFERENCE_BATCH_BUTTONS_MOVE = "batch_buttons_move";
private static final String PREFERENCE_BATCH_BUTTONS_FLAG = "batch_buttons_flag";
private static final String PREFERENCE_BATCH_BUTTONS_UNSELECT = "batch_buttons_unselect";
private static final String PREFERENCE_MESSAGEVIEW_MOBILE_LAYOUT = "messageview_mobile_layout";
private static final String PREFERENCE_BACKGROUND_OPS = "background_ops";
@ -123,6 +129,12 @@ public class Prefs extends K9PreferenceActivity {
private com.fsck.k9.preferences.TimePickerPreference mQuietTimeEnds;
private Preference mAttachmentPathPreference;
private CheckBoxPreference mBatchButtonsMarkRead;
private CheckBoxPreference mBatchButtonsDelete;
private CheckBoxPreference mBatchButtonsArchive;
private CheckBoxPreference mBatchButtonsMove;
private CheckBoxPreference mBatchButtonsFlag;
private CheckBoxPreference mBatchButtonsUnselect;
public static void actionPrefs(Context context) {
Intent i = new Intent(context, Prefs.class);
@ -347,6 +359,32 @@ public class Prefs extends K9PreferenceActivity {
}
};
});
mBatchButtonsMarkRead = (CheckBoxPreference)findPreference(PREFERENCE_BATCH_BUTTONS_MARK_READ);
mBatchButtonsDelete = (CheckBoxPreference)findPreference(PREFERENCE_BATCH_BUTTONS_DELETE);
mBatchButtonsArchive = (CheckBoxPreference)findPreference(PREFERENCE_BATCH_BUTTONS_ARCHIVE);
mBatchButtonsMove = (CheckBoxPreference)findPreference(PREFERENCE_BATCH_BUTTONS_MOVE);
mBatchButtonsFlag = (CheckBoxPreference)findPreference(PREFERENCE_BATCH_BUTTONS_FLAG);
mBatchButtonsUnselect = (CheckBoxPreference)findPreference(PREFERENCE_BATCH_BUTTONS_UNSELECT);
mBatchButtonsMarkRead.setChecked(K9.batchButtonsMarkRead());
mBatchButtonsDelete.setChecked(K9.batchButtonsDelete());
mBatchButtonsArchive.setChecked(K9.batchButtonsArchive());
mBatchButtonsMove.setChecked(K9.batchButtonsMove());
mBatchButtonsFlag.setChecked(K9.batchButtonsFlag());
mBatchButtonsUnselect.setChecked(K9.batchButtonsUnselect());
// If we don't have any accounts with an archive folder, then don't enable the preference.
boolean hasArchiveFolder = false;
for (final Account acct : Preferences.getPreferences(this).getAccounts()) {
if (acct.hasArchiveFolder()) {
hasArchiveFolder = true;
break;
}
}
if (!hasArchiveFolder) {
mBatchButtonsArchive.setEnabled(false);
mBatchButtonsArchive.setSummary(R.string.global_settings_archive_disabled_reason);
}
}
private void saveSettings() {
@ -386,6 +424,12 @@ public class Prefs extends K9PreferenceActivity {
K9.setQuietTimeStarts(mQuietTimeStarts.getTime());
K9.setQuietTimeEnds(mQuietTimeEnds.getTime());
K9.setBatchButtonsMarkRead(mBatchButtonsMarkRead.isChecked());
K9.setBatchButtonsDelete(mBatchButtonsDelete.isChecked());
K9.setBatchButtonsArchive(mBatchButtonsArchive.isChecked());
K9.setBatchButtonsMove(mBatchButtonsMove.isChecked());
K9.setBatchButtonsFlag(mBatchButtonsFlag.isChecked());
K9.setBatchButtonsUnselect(mBatchButtonsUnselect.isChecked());
K9.setZoomControlsEnabled(mZoomControlsEnabled.isChecked());
K9.setAttachmentDefaultPath(mAttachmentPathPreference.getSummary().toString());

View File

@ -135,47 +135,12 @@ public class MessagingController implements Runnable {
private Thread mThread;
private Set<MessagingListener> mListeners = new CopyOnWriteArraySet<MessagingListener>();
private HashMap<SORT_TYPE, Boolean> sortAscending = new HashMap<SORT_TYPE, Boolean>();
private final ConcurrentHashMap<String, AtomicInteger> sendCount = new ConcurrentHashMap<String, AtomicInteger>();
ConcurrentHashMap<Account, Pusher> pushers = new ConcurrentHashMap<Account, Pusher>();
private final ExecutorService threadPool = Executors.newCachedThreadPool();
public enum SORT_TYPE {
SORT_DATE(R.string.sort_earliest_first, R.string.sort_latest_first, false),
SORT_ARRIVAL(R.string.sort_earliest_first, R.string.sort_latest_first, false),
SORT_SUBJECT(R.string.sort_subject_alpha, R.string.sort_subject_re_alpha, true),
SORT_SENDER(R.string.sort_sender_alpha, R.string.sort_sender_re_alpha, true),
SORT_UNREAD(R.string.sort_unread_first, R.string.sort_unread_last, true),
SORT_FLAGGED(R.string.sort_flagged_first, R.string.sort_flagged_last, true),
SORT_ATTACHMENT(R.string.sort_attach_first, R.string.sort_unattached_first, true);
private int ascendingToast;
private int descendingToast;
private boolean defaultAscending;
SORT_TYPE(int ascending, int descending, boolean ndefaultAscending) {
ascendingToast = ascending;
descendingToast = descending;
defaultAscending = ndefaultAscending;
}
public int getToast(boolean ascending) {
if (ascending) {
return ascendingToast;
} else {
return descendingToast;
}
}
public boolean isDefaultAscending() {
return defaultAscending;
}
}
private SORT_TYPE sortType = SORT_TYPE.SORT_DATE;
private MessagingListener checkMailListener = null;
private MemorizingListener memorizingListener = new MemorizingListener();
@ -3498,10 +3463,10 @@ public class MessagingController implements Runnable {
// ASH i seem to have deleted the four below isMoveCapable/isCopyCapable methods:
public boolean isMoveCapable(Message message) {
return !message.getUid().startsWith(K9.LOCAL_UID_PREFIX);
}/*
}
public boolean isCopyCapable(Message message) {
return isMoveCapable(message);
}*/
}
public boolean isMoveCapable(final Account account) {
try {
@ -3513,7 +3478,7 @@ public class MessagingController implements Runnable {
Log.e(K9.LOG_TAG, "Exception while ascertaining move capability", me);
return false;
}
}/*
}
public boolean isCopyCapable(final Account account) {
try {
Store localStore = account.getLocalStore();
@ -3523,7 +3488,7 @@ public class MessagingController implements Runnable {
Log.e(K9.LOG_TAG, "Exception while ascertaining copy capability", me);
return false;
}
}*/
}
public void moveMessages(final Account account, final String srcFolder, final Message[] messages, final String destFolder,
final MessagingListener listener) {
@ -4787,25 +4752,6 @@ public class MessagingController implements Runnable {
}
}
public SORT_TYPE getSortType() {
return sortType;
}
public void setSortType(SORT_TYPE sortType) {
this.sortType = sortType;
}
public boolean isSortAscending(SORT_TYPE sortType) {
Boolean sortAsc = sortAscending.get(sortType);
if (sortAsc == null) {
return sortType.isDefaultAscending();
} else return sortAsc;
}
public void setSortAscending(SORT_TYPE sortType, boolean nsortAscending) {
sortAscending.put(sortType, nsortAscending);
}
public Collection<Pusher> getPushers() {
return pushers.values();
}

View File

@ -0,0 +1,17 @@
package com.fsck.k9.helper;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
public class ContactItem implements Serializable {
private static final long serialVersionUID = 4893328130147843375L;
public final String displayName;
public final List<String> emailAddresses;
public ContactItem(String displayName, List<String> emailAddresses) {
this.displayName = displayName;
this.emailAddresses = Collections.unmodifiableList(emailAddresses);
}
}

View File

@ -2,6 +2,7 @@ package com.fsck.k9.helper;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
@ -174,13 +175,15 @@ public abstract class Contacts {
public abstract Intent contactPickerIntent();
/**
* Given a contact picker intent, returns the primary email address of that
* contact.
* Given a contact picker intent, returns a {@code ContactItem} instance for that contact.
*
* @param intent The {@link Intent} returned by this contact picker.
* @return The primary email address of the picked contact.
* @param intent
* The {@link Intent} returned by the contact picker.
*
* @return A {@link ContactItem} instance describing the picked contact. Or {@code null} if the
* contact doesn't have any email addresses.
*/
public abstract String getEmailFromContactPicker(final Intent intent);
public abstract ContactItem extractInfoFromContactPickerIntent(final Intent intent);
/**
* Does the device actually have a Contacts application suitable for

View File

@ -1,5 +1,7 @@
package com.fsck.k9.helper;
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
@ -191,23 +193,43 @@ public class ContactsSdk5 extends com.fsck.k9.helper.Contacts {
}
@Override
public String getEmailFromContactPicker(final Intent data) {
public ContactItem extractInfoFromContactPickerIntent(final Intent data) {
Cursor cursor = null;
String email = "";
ArrayList<String> email = new ArrayList<String>();
try {
Uri result = data.getData();
String displayName = null;
// Get the contact id from the Uri
String id = result.getLastPathSegment();
cursor = mContentResolver.query(Email.CONTENT_URI,
null, Email.CONTACT_ID + "=?", new String[] { id },
null);
int emailIdx = cursor.getColumnIndex(Email.DATA);
cursor = mContentResolver.query(Email.CONTENT_URI, PROJECTION,
Email.CONTACT_ID + "=?", new String[] { id }, null);
if (cursor.moveToFirst()) {
email = cursor.getString(emailIdx);
if (cursor != null) {
while (cursor.moveToNext()) {
String address = cursor.getString(EMAIL_INDEX);
if (address != null) {
email.add(address);
}
if (displayName == null) {
displayName = cursor.getString(NAME_INDEX);
}
}
// Return 'null' if no email addresses have been found
if (email.size() == 0) {
return null;
}
// Use the first email address found as display name
if (displayName == null) {
displayName = email.get(0);
}
return new ContactItem(displayName, email);
}
} catch (Exception e) {
Log.e(K9.LOG_TAG, "Failed to get email data", e);
@ -215,7 +237,7 @@ public class ContactsSdk5 extends com.fsck.k9.helper.Contacts {
Utility.closeQuietly(cursor);
}
return email;
return null;
}
/**

View File

@ -15,6 +15,7 @@ import org.apache.james.mime4j.codec.QuotedPrintableInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
@ -22,6 +23,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
@ -1033,6 +1035,25 @@ public class MimeUtility {
* We've got a text part, so let's see if it needs to be processed further.
*/
String charset = getHeaderParameter(part.getContentType(), "charset");
/*
* determine the charset from HTML message.
*/
if (mimeType.equalsIgnoreCase("text/html") && charset == null) {
InputStreamReader in = new InputStreamReader(part.getBody().getInputStream(),
"US-ASCII");
char[] buf = new char[256];
in.read(buf, 0, buf.length);
String str = new String(buf);
if (str.length() == 0) {
return "";
}
Pattern p = Pattern.compile("<meta http-equiv=\"?Content-Type\"? content=\"text/html; charset=(.+?)\">", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
if (m.find()) {
charset = m.group(1);
}
}
charset = fixupCharset(charset, getMessageFromPart(part));
/*

View File

@ -35,6 +35,7 @@ import com.fsck.k9.AccountStats;
import com.fsck.k9.K9;
import com.fsck.k9.Preferences;
import com.fsck.k9.R;
import com.fsck.k9.Account.MessageFormat;
import com.fsck.k9.controller.MessageRemovalListener;
import com.fsck.k9.controller.MessageRetrievalListener;
import com.fsck.k9.controller.MessagingController;
@ -1761,23 +1762,26 @@ Log.v("ASH", mAccount.getDescription() + ":" + name + " is " + (localOnly == 1 ?
MimeBodyPart bp = new MimeBodyPart(body, "text/plain");
mp.addBodyPart(bp);
}
if (htmlContent != null) {
TextBody body = new TextBody(htmlContent);
MimeBodyPart bp = new MimeBodyPart(body, "text/html");
mp.addBodyPart(bp);
}
// If we have both text and html content and our MIME type
// isn't multipart/alternative, then corral them into a new
// multipart/alternative part and put that into the parent.
// If it turns out that this is the only part in the parent
// MimeMultipart, it'll get fixed below before we attach to
// the message.
if (textContent != null && htmlContent != null && !mimeType.equalsIgnoreCase("multipart/alternative")) {
MimeMultipart alternativeParts = mp;
alternativeParts.setSubType("alternative");
mp = new MimeMultipart();
mp.addBodyPart(new MimeBodyPart(alternativeParts));
if (mAccount.getMessageFormat() == MessageFormat.HTML) {
if (htmlContent != null) {
TextBody body = new TextBody(htmlContent);
MimeBodyPart bp = new MimeBodyPart(body, "text/html");
mp.addBodyPart(bp);
}
// If we have both text and html content and our MIME type
// isn't multipart/alternative, then corral them into a new
// multipart/alternative part and put that into the parent.
// If it turns out that this is the only part in the parent
// MimeMultipart, it'll get fixed below before we attach to
// the message.
if (textContent != null && htmlContent != null && !mimeType.equalsIgnoreCase("multipart/alternative")) {
MimeMultipart alternativeParts = mp;
alternativeParts.setSubType("alternative");
mp = new MimeMultipart();
mp.addBodyPart(new MimeBodyPart(alternativeParts));
}
}
} else if (mimeType != null && mimeType.equalsIgnoreCase("text/plain")) {
// If it's text, add only the plain part. The MIME
@ -2983,6 +2987,8 @@ Log.v("ASH", mAccount.getDescription() + ":" + name + " is " + (localOnly == 1 ?
text = text.replaceAll("(?m)^On .*wrote.?$", "");
// Remove a more generic quote header from the preview
text = text.replaceAll("(?m)^.*\\w+:$", "");
// Remove horizontal rules.
text = text.replaceAll("\\s*([-=_]{30,}+)\\s*", " ");
// URLs in the preview should just be shown as "..." - They're not
// clickable and they usually overwhelm the preview
@ -2991,6 +2997,9 @@ Log.v("ASH", mAccount.getDescription() + ":" + name + " is " + (localOnly == 1 ?
text = text.replaceAll("(\\r|\\n)+", " ");
// Collapse whitespace in the preview
text = text.replaceAll("\\s+", " ");
// Remove any whitespace at the beginning and end of the string.
text = text.trim();
if (text.length() <= 512) {
return text;
} else {

View File

@ -9,6 +9,7 @@ import java.util.TreeMap;
import android.content.SharedPreferences;
import com.fsck.k9.Account;
import com.fsck.k9.Account.SortType;
import com.fsck.k9.K9;
import com.fsck.k9.R;
import com.fsck.k9.Account.FolderMode;
@ -24,6 +25,11 @@ public class AccountSettings {
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
/**
* When adding new settings here, be sure to increment {@link Settings.VERSION}
* and use that for whatever you add here.
*/
s.put("archiveFolderName", Settings.versions(
new V(1, new StringSetting("Archive"))
));
@ -162,6 +168,12 @@ public class AccountSettings {
s.put("sentFolderName", Settings.versions(
new V(1, new StringSetting("Sent"))
));
s.put("sortTypeEnum", Settings.versions(
new V(9, new EnumSetting(SortType.class, Account.DEFAULT_SORT_TYPE))
));
s.put("sortAscending", Settings.versions(
new V(9, new BooleanSetting(Account.DEFAULT_SORT_ASCENDING))
));
s.put("showPicturesEnum", Settings.versions(
new V(1, new EnumSetting(Account.ShowPictures.class, Account.ShowPictures.NEVER))
));

View File

@ -20,6 +20,11 @@ public class FolderSettings {
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
/**
* When adding new settings here, be sure to increment {@link Settings.VERSION}
* and use that for whatever you add here.
*/
s.put("displayMode", Settings.versions(
new V(1, new EnumSetting(FolderClass.class, FolderClass.NO_CLASS))
));

View File

@ -26,6 +26,11 @@ public class GlobalSettings {
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
/**
* When adding new settings here, be sure to increment {@link Settings.VERSION}
* and use that for whatever you add here.
*/
s.put("animations", Settings.versions(
new V(1, new BooleanSetting(false))
));
@ -199,6 +204,24 @@ public class GlobalSettings {
new V(1, new BooleanSetting(false)),
new V(4, new BooleanSetting(true))
));
s.put("batchButtonsMarkRead", Settings.versions(
new V(8, new BooleanSetting(true))
));
s.put("batchButtonsDelete", Settings.versions(
new V(8, new BooleanSetting(true))
));
s.put("batchButtonsArchive", Settings.versions(
new V(8, new BooleanSetting(false))
));
s.put("batchButtonsMove", Settings.versions(
new V(8, new BooleanSetting(false))
));
s.put("batchButtonsFlag", Settings.versions(
new V(8, new BooleanSetting(true))
));
s.put("batchButtonsUnselect", Settings.versions(
new V(8, new BooleanSetting(true))
));
SETTINGS = Collections.unmodifiableMap(s);

View File

@ -22,6 +22,11 @@ public class IdentitySettings {
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
/**
* When adding new settings here, be sure to increment {@link Settings.VERSION}
* and use that for whatever you add here.
*/
s.put("signature", Settings.versions(
new V(1, new SignatureSetting())
));

View File

@ -35,7 +35,7 @@ public class Settings {
*
* @see SettingsExporter
*/
public static final int VERSION = 7;
public static final int VERSION = 9;
public static Map<String, Object> validate(int version, Map<String,
TreeMap<Integer, SettingsDescription>> settings,

View File

@ -524,9 +524,13 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
resetView();
String type;
String text = pgpData.getDecryptedData();
String text = null;
if (pgpData != null) {
text = pgpData.getDecryptedData();
}
if (text != null) {
type = "text/plain";
type = "text/html";
text = "<html><body><pre>" + text + "</pre></body></html>";
} else {
// getTextForDisplay() always returns HTML-ified content.
text = message.getTextForDisplay();
@ -538,7 +542,7 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
loadBodyFromText(emailText, contentType);
updateCryptoLayout(account.getCryptoProvider(), pgpData, message);
} else {
loadBodyFromUrl("file:///android_asset/empty.html");
showStatusMessage(getContext().getString(R.string.webview_empty_message));
}
mHasAttachments = message.hasAttachments();
@ -590,10 +594,12 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
}
}
public void loadBodyFromUrl(String url) {
mMessageContentView.loadUrl(url);
public void showStatusMessage(String status) {
String text = "<html><body><div style=\"text-align:center; color: grey;\">" +
status +
"</div></body></html>";
loadBodyFromText(text, "text/html");
mCryptoView.hide();
}
private void loadBodyFromText(String emailText, String contentType) {
@ -763,6 +769,7 @@ public class SingleMessageView extends LinearLayout implements OnClickListener,
mSavedState = savedState;
}
@Override
public void onLayoutChanged() {
if (mMessageContentView != null) {
mMessageContentView.invalidate();

View File

@ -1,143 +0,0 @@
package com.fsck.k9.view;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.ScrollView;
import com.fsck.k9.K9;
import com.fsck.k9.controller.MessagingListener;
/**
* An extension of {@link ScrollView} that allows scrolling to be selectively disabled.
*/
public class ToggleScrollView extends ScrollView {
private GestureDetector mDetector;
private boolean mScrolling = true;
private int mCurrentYPosition;
private double mScrollPercentage;
private ScrollToLastLocationListener mListener;
public ToggleScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
mDetector = new GestureDetector(new YScrollDetector());
}
public void setScrolling(boolean enable) {
mScrolling = enable;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return (mScrolling) ? super.onTouchEvent(ev) : true;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (!mScrolling) {
return false;
}
// This doesn't quite get us to diagonal scrolling, but it's somewhat better than what we've
// currently got. This is based on
// http://stackoverflow.com/questions/2646028/android-horizontalscrollview-within-scrollview-touch-handling
boolean result = super.onInterceptTouchEvent(ev);
// Let the original ScrollView handle ACTION_DOWN so we can stop the scroll when someone touches the screen.
if (ev.getAction() == MotionEvent.ACTION_DOWN || mDetector.onTouchEvent(ev)) {
return result;
}
return false;
}
// Return false if we're scrolling in the x direction. That is, decline to consume the event and
// let the parent class take a stab at it.
class YScrollDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
try {
if (Math.abs(distanceY) > Math.abs(distanceX)) {
return true;
} else {
return false;
}
} catch (Exception e) {
// nothing
}
return false;
}
}
/**
* Fetch the current percentage by which this view has been scrolled.
* @return Scroll percentage based on the top edge of the screen, from 0 to 100. This number should never really
* be 100, unless the screen is of 0 height...
*/
public double getScrollPercentage() {
// We save only the Y coordinate instead of the percentage because I don't know how expensive the
// computeVerticalScrollRange() call is.
final int scrollRange = computeVerticalScrollRange();
if(scrollRange == 0) {
return 0;
}
return (double) mCurrentYPosition / scrollRange;
}
/**
* Set the percentage by which we should scroll the page once we get the load complete event. This is
* based on the top edge of the view.
* @param percentage Percentage of page to scroll to.
*/
public void setScrollPercentage(final double percentage) {
Log.d(K9.LOG_TAG, "ToggleView: Setting last scroll percentage to " + percentage);
this.mScrollPercentage = percentage;
}
/**
* Override {@link ScrollView#onScrollChanged(int, int, int, int)} to record the current x/y position. We use this
* to save our current position for future scrolling.
*
* @param x
* @param y
* @param oldx
* @param oldy
*/
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
this.mCurrentYPosition = y;
// I wish Android has a TRACE log level so I wouldn't have to comment this out. This one is really noisy.
// Log.d(K9.LOG_TAG, "ToggleScrollView: mCurrentYPosition=" + y + " scrollRange=" + computeVerticalScrollRange() + " pct=" + getScrollPercentage());
}
/**
* This is a {@link MessagingListener} which listens for when the a message has finished being displayed on the
* screen. We'll scroll the message to the user's last known location once it's done.
*/
class ScrollToLastLocationListener extends MessagingListener {
public void messageViewFinished() {
// Don't scroll if our last position was at the top.
if(mScrollPercentage != 0.0) {
final int scrollRange = computeVerticalScrollRange();
final int newY = (int)(mScrollPercentage * scrollRange);
Log.d(K9.LOG_TAG, "ToggleScrollView: requested " + (100 * mScrollPercentage) + "%, " +
"scrolling to " + newY + "/" + scrollRange);
scrollTo(0, newY);
}
}
}
/**
* Fetch the {@link MessagingListener} for this <code>ScrollView</code>.
* @return
*/
public MessagingListener getListener() {
if(this.mListener != null) {
return this.mListener;
} else {
return this.mListener = new ScrollToLastLocationListener();
}
}
}