1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-11-16 22:45:04 -05: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"?> <?xml version="1.0" encoding="utf-8"?>
<manifest <manifest
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="15012" android:versionCode="15013"
android:versionName="4.113" package="com.fsck.k9" android:versionName="4.114" package="com.fsck.k9"
> >
<uses-sdk <uses-sdk
android:minSdkVersion="7" android:minSdkVersion="7"
@ -281,7 +281,10 @@
android:name="com.fsck.k9.activity.AccessibleEmailContentActivity" android:name="com.fsck.k9.activity.AccessibleEmailContentActivity"
> >
</activity> </activity>
<activity android:name="com.fsck.k9.activity.EmailAddressList"
android:configChanges="locale"
>
</activity>
<receiver android:name="com.fsck.k9.service.BootReceiver" <receiver android:name="com.fsck.k9.service.BootReceiver"
android:enabled="true" 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="RUN_PROCESS_RESOURCES_MAVEN_TASK" value="true" />
<option name="GENERATE_UNSIGNED_APK" value="false" /> <option name="GENERATE_UNSIGNED_APK" value="false" />
<option name="CUSTOM_DEBUG_KEYSTORE_PATH" value="" /> <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> </configuration>
</facet> </facet>
</component> </component>
@ -99,7 +103,6 @@
<SOURCES /> <SOURCES />
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="library" scope="PROVIDED" name="Android 2.3.1 Platform" level="application" />
</component> </component>
</module> </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:layout_weight="1"
android:src="@drawable/ic_button_delete" 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 <ImageButton
android:id="@+id/batch_flag_button" android:id="@+id/batch_flag_button"
android:layout_width="0dip" android:layout_width="0dip"

View File

@ -32,8 +32,9 @@
/> />
<item <item
android:id="@+id/read_receipt" android:id="@+id/read_receipt"
android:alphabeticShortcut="r" android:alphabeticShortcut="r"
android:title="@string/read_receipt" android:title="@string/read_receipt"
android:icon="@drawable/ic_menu_reply_receipt"
/> />
<item <item
android:id="@+id/add_attachment_image" 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. ## --> <!-- ## This is draft. Send all your notes or suggestions to address given above. ## -->
<!-- ## ## --> <!-- ## ## -->
<!-- ## Latest update: (YYYY-MM-DD): 2010.07.03 ## --> <!-- ## 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="beta_app_name">K-9 Mail BETA</string>
<string name="app_authors">Google, The K-9 Dog Walkers.</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_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_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> <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>--> <string name="app_libraries">K-9 mail zawiera kod źródłowy: <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_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_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_attachment_desc">Zezwalaj tej aplikacji na czytanie załaczników z Twoich wiadomości.</string>
<string name="read_messages_label">Odczytaj maile</string> <string name="read_messages_label">Odczytaj wiadomości</string>
<string name="read_messages_desc">Zezwalaj tej aplikacji na czytanie Twoich maili</string> <string name="read_messages_desc">Zezwalaj tej aplikacji na czytanie Twoich wiadomości</string>
<string name="delete_messages_label">Usuń emaile</string> <string name="delete_messages_label">Usuń wiadomości</string>
<string name="delete_messages_desc">Zezwalaj tej aplikacji na usuwanie Twoich maili.</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="about_title_fmt"><xliff:g id="app_name">%s</xliff:g></string>
<string name="accounts_title">Konta</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="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="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_folder_title">Wybierz folder</string>
<string name="choose_color_title">Wybierz kolor</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_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="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">\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(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_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_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_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="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> <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="forward_action">Prześlij dalej</string>
<string name="move_action">Przenieś</string> <string name="move_action">Przenieś</string>
<string name="continue_action">Kontynuuj</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="done_action">Gotowe</string> <!-- Used to complete a multi-step process -->
<string name="remove_action">Skasuj</string> <string name="remove_action">Skasuj</string>
<string name="discard_action">Usuń</string> <string name="discard_action">Usuń</string>
<string name="save_draft_action">Zapisz jako szkic</string> <string name="save_draft_action">Zapisz jako szkic</string>
<string name="retry_action">Ponów</string> <string name="retry_action">Ponów</string>
<string name="refresh_action">Odśwież</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="send_messages_action">Wyślij wiadomości</string>
<string name="list_folders_action">Lista folderów</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="mark_all_as_read_action">Wszystkie jako przeczytane</string>
<string name="add_account_action">Dodaj konto</string> <string name="add_account_action">Dodaj konto</string>
<string name="compose_action">Napisz</string> <string name="compose_action">Napisz</string>
@ -100,36 +103,35 @@
<string name="back_to_accounts_action"></string> <string name="back_to_accounts_action"></string>
<string name="back_to_folder_list_action"></string> <string name="back_to_folder_list_action"></string>
<string name="read_action">Otwórz</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_action">Prześlij dalej (alternatywne)</string>
<string name="send_alternate_chooser_title">Wybierz nadawcę</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_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 <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>
(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="flag_action">Dodaj gwiazdkę</string>
<string name="unflag_action">Usuń gwiazdkę</string> <string name="unflag_action">Usuń gwiazdkę</string>
<string name="copy_action">Skopiuj</string> <string name="copy_action">Skopiuj</string>
<string name="show_full_header_action">Pokaż pełne nagłówki</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="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="mark_as_unread_action">Jako nieprzeczytane</string>
<string name="move_to_action">Przenieś do</string> <string name="move_to_action">Przenieś do</string>
<string name="folders_action">Foldery</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="add_cc_bcc_action">Dodaj DW/UDW</string>
<string name="edit_subject_action">Edytuj temat</string> <string name="edit_subject_action">Edytuj temat</string>
<!-- NEW: <string name="read_receipt">Read receipt</string>--> <string name="read_receipt">Powiadomienie o przeczytaniu</string>
<!-- NEW: <string name="read_receipt_enabled">Read receipt will be requested</string>--> <string name="read_receipt_enabled">Żadaj powiadomienia o przeczytaniu</string>
<!-- NEW: <string name="read_receipt_disabled">Read receipt will not be requested</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">Dodaj załącznik</string>
<string name="add_attachment_action_image">Dodaj załącznik (Zdjęcie)</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="dump_settings_action">Zapisz ustawienia</string>
<string name="empty_trash_action">Opróżnij śmietnik</string> <string name="empty_trash_action">Opróżnij kosz</string>
<string name="expunge_action">Wyczyść</string> <!-- FIXME - probably--> <string name="expunge_action">Wyczyść</string>
<string name="clear_local_folder_action">Wyczyść wiadomości lokalne</string> <string name="clear_local_folder_action">Wyczyść wiadomości lokalne</string>
<string name="set_sort_action">Wybierz sortowanie</string> <string name="set_sort_action">Wybierz sortowanie</string>
<string name="reverse_sort_action">Sortuj malejąco</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_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_date">Brak daty</string>
<string name="general_no_sender">Brak nadawcy</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">Sprawdzanie <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_folder">(Sprawdzam <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_more">Wczytuję wiadomości…</string>
<string name="status_network_error">Błąd połączenia</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_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 --> <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="notification_bg_title_separator">:</string>
<string name="special_mailbox_name_inbox">Odebrane</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 --> <!-- 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_drafts">Szablony</string>
<string name="special_mailbox_name_trash">Trash</string> <string name="special_mailbox_name_trash">Kosz</string>
<string name="special_mailbox_name_sent">Sent</string> <string name="special_mailbox_name_sent">Wysłane</string>
<string name="special_mailbox_name_archive">Archiwizuj</string> <string name="special_mailbox_name_archive">Archiwizuj</string>
<string name="special_mailbox_name_spam">Spam</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_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_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_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> <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_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. <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 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 \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 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 Outbox a następnie wybierz "Wyślij wiadomości" aby 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 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> 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> <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 * Zapisywanie załączników na kartę SD
\n * Opróźnianie folderu \"Trash\" \n * Opróźnianie folderu \"Trash\"
\n * Sortowanie wiadomości \n * Sortowanie wiadomości
\n * ... i wiele innych \n * i wiele innych
\n \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. \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 \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_title">Loguj poufne informacje</string>
<string name="debug_enable_sensitive_logging_summary">Logi mogą zawierać Twoje hasła</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_title">Wszystkie wiadomości</string>
<string name="combined_inbox_label">Recent messages from all accounts</string> <string name="combined_inbox_label">Ostatnie wiadomości ze wszystkich kont</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_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> <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> <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_bcc_hint">UDW</string>
<string name="message_compose_subject_hint">Temat</string> <string name="message_compose_subject_hint">Temat</string>
<string name="message_compose_content_hint">Treść wiadomości</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_separator">-------- Wiadomość oryginalna --------</string>
<string name="message_compose_quote_header_subject">Temat:</string> <string name="message_compose_quote_header_subject">Temat:</string>
<string name="message_compose_quote_header_send_date">Wysłane:</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="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="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_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> <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>
<!-- NEW: <string name="message_compose_show_quoted_text_action">Quote message</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_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_to_label">Do:</string>
<string name="message_view_cc_label">DW:</string> <string name="message_view_cc_label">DW:</string>
<string name="message_view_attachment_view_action">Otwórz</string> <string name="message_view_attachment_view_action">Otwórz</string>
<string name="message_view_attachment_download_action">Zapisz</string> <string name="message_view_attachment_download_action">Zapisz</string>
<string name="message_view_prev_action">\u25BC</string> <string name="message_view_prev_action"></string>
<string name="message_view_next_action">\u25B2</string> <string name="message_view_next_action"></string>
<string name="message_view_archive_action">Archiwizuj</string> <string name="message_view_archive_action">Archiwizuj</string>
<string name="message_view_move_action">Przenieś</string> <string name="message_view_move_action">Przenieś</string>
<string name="message_view_spam_action">Spam</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_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_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_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_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> <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' --> <!-- 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_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> <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="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_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_label">Oznaczaj gwiazdkami</string>
<string name="global_settings_flag_summary">Gwiazka wskazuje oznakowane wiadomości</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_label">Zaznaczanie wielu</string>
<string name="global_settings_checkbox_summary">Opcja zaznaczania dostępna zawsze w trybie wielokrotnego wyboru</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 Touch-friendly</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_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_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_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_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_label">Pokazuj nazwę kontaktu</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_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_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_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_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_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_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> <string name="global_settings_messageview_return_to_list_summary">Wraca do listy wiadomości po usunięciu danej wiadomości</string>
<!-- NEW: <string name="global_settings_messageview_show_next_label">Show next message after delete</string>--> <string name="global_settings_messageview_show_next_label">Pokaż następną wiadomość po usunięciu</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_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_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_archive">Archiwizuj</string>
<string name="global_settings_confirm_action_delete">Usuń (tylko widok wiadomości)</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_spam">Spam</string>
<string name="global_settings_confirm_action_mark_all_as_read">Oznacz wszystkie jako przeczytane</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_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_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">Okres ciszy</string>
<string name="quiet_time_description">Wyłącz dzwonienie, wibracje i mruganie w nocy</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_basics_manual_setup_action">Ustaw ręcznie</string>
<string name="account_setup_check_settings_title"></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_retr_info_msg">Pobieram informacje</string>
<string name="account_setup_check_settings_check_incoming_msg">Sprawdzam ustawienia serwera\u2026</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\u2026</string> <string name="account_setup_check_settings_check_outgoing_msg">Sprawdzam ustawienia serwera</string>
<string name="account_setup_check_settings_authenticate">Autentykacja\u2026</string> <string name="account_setup_check_settings_authenticate">Autentyfikacja…</string>
<string name="account_setup_check_settings_fetch">Pobieranie ustawień konta\u2026</string> <string name="account_setup_check_settings_fetch">Pobieranie ustawień konta</string>
<string name="account_setup_check_settings_finishing_msg">Kończę\u2026</string> <string name="account_setup_check_settings_finishing_msg">Kończę</string>
<string name="account_setup_check_settings_canceling_msg">Przerywam\u2026</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_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_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_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_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_title">Rodzaj konta</string>
<string name="account_setup_account_type_instructions">Jakiego typu serwer obsługuje to konto?</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_wifi_label">Wi-Fi</string>
<string name="account_setup_incoming_other_label">Inne</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_title">Pobieranie nagłówków</string>
<string name="account_setup_incoming_save_all_headers_label">Zapisuj nagłówki lokalnie</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_external_label">Pamięć zewnętrzna (karta SD)</string>
<string name="local_storage_provider_internal_label">Zwykła pamięc wewnętrzna</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_on_poll">Podczas każdego pobrania</string>
<string name="account_setup_expunge_policy_manual">Tylko ręcznie</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="account_setup_incoming_imap_path_prefix_label">Prefiks ścieżki IMAP</string>
<string name="drafts_folder_label">Szkice</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_label">Ścieżka WebDAV (Exchange)</string>
<string name="account_setup_incoming_webdav_path_prefix_hint">Opcjonalne</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_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_label">Ścieżka Mailboxa</string>
<string name="account_setup_incoming_webdav_mailbox_path_hint">Opcjonalne</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_smtp_server_label">Nazwa serwera SMTP</string>
<string name="account_setup_outgoing_port_label">Port</string> <string name="account_setup_outgoing_port_label">Port</string>
<string name="account_setup_outgoing_security_label">Typ zabezpieczeń</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_security_tls_label">TLS (zawsze)</string>
<string name="account_setup_outgoing_require_login_label">Serwer wymaga uwierzytelnienia</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_username_label">Identyfikator</string>
<string name="account_setup_outgoing_password_label">Haslo</string> <string name="account_setup_outgoing_password_label">Hasło</string>
<string name="account_setup_outgoing_authentication_label">Rodzaj autentykacji</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 --> <!-- 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_label">Login i hasło</string>
<string name="account_setup_outgoing_authentication_basic_username_label">Identyfikator</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="clear_action">Usuń wszystkie dane (niebezpieczne!)</string>
<string name="recreate_action">Odtwórz dane (ostatnia szansa!)</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_* --> <!-- 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_never">Nigdy</string>
<string name="account_setup_options_mail_check_frequency_1min">Co 1 minutę</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="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_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="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">Odswież połączenie IDLE</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_1min">Co 1 minutę</string>
<string name="idle_refresh_period_2min">Co 2 minuty</string> <string name="idle_refresh_period_2min">Co 2 minuty</string>
<string name="idle_refresh_period_3min">co 3 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_48min">Co 48 minut</string>
<string name="idle_refresh_period_60min">Co 60 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_label">Powiadamiaj o nowej poczcie</string>
<string name="account_setup_options_notify_sync_label">Powiadamiaj o sprawdzaniu konta</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_edit_details_action">Popraw ustawienia</string>
<string name="account_setup_failed_dlg_continue_action">Kontynuuj</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_title_fmt">Ustawienia ogólne</string>
<string name="account_settings_default">Konto domyś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_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_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_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_summary">Powiadomiaj na pasku statusu, gdy jest nowa wiadomość</string>
<string name="account_settings_notify_sync_summary">Powiadomiaj na pasku statusu o sprawdzaniu tego konta</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ż łączony Inbox</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_label">Moje wiadomości</string>
<string name="account_settings_notify_self_summary">Powiadamiaj o mailach wysłanych przeze mnie</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">Notyfikacja otwiera nieprz. wiadomości</string> <!-- FIXME --> <string name="account_settings_notification_opens_unread_label">Nowe nieprzeczytane</string>
<string name="account_settings_notification_opens_unread_summary">Notifikacja wyszukuje nieprz. wiadomości</string> <!-- FIXME --> <string name="account_settings_notification_opens_unread_summary">Powiadomienie o nieprzeczytanych wiadomościach</string>
<string name="account_settings_notification_unread_count_label">Pokaż liczbę nieprzeczytanych</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_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_enable_move_buttons_summary">Pokaż przyciski Archiwum, Przenieś, Spam.</string>
<string name="account_settings_show_pictures_label">Zawsze pokazuj obrazki</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> <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>--> <string name="account_settings_default_quoted_text_shown_label">Cytuj oryginał</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_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_label">Cytat pod spodem</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_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_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_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_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>--> <string name="account_settings_message_read_receipt_label">Potwierdzenie przeczytania</string>
<!-- NEW: <string name="account_settings_message_read_receipt_summary">Always request a read receipt</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_label">Styl cytowania podczas odpowiedzi</string>
<string name="account_settings_quote_style_prefix">Prefix (jak Gmail, Pine)</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_quote_style_header">Nagłówek (jak Outlook, Yahoo!, Hotmail)</string>
<string name="account_settings_general_title">Ustawienia ogólne</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_sync">Synchronizacja folderów</string>
<string name="account_settings_folders">Foldery</string> <string name="account_settings_folders">Foldery</string>
<string name="account_settings_message_lists">Lista wiadomości</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_none">Bez</string>
<string name="account_settings_crypto_app_not_available">nie dostępny</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">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_mail_check_frequency_label">Sprawdzanie konta</string>
<string name="account_settings_second_class_check_frequency_label">Cykliczne sprawdzanie folderów klasy 2</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_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_1">1Kb</string>
<string name="account_settings_autodownload_message_size_2">2Kb</string> <string name="account_settings_autodownload_message_size_2">2Kb</string>
<string name="account_settings_autodownload_message_size_4">4Kb</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_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_label">Synchronizuj nowsze niż</string>
<string name="account_settings_message_age_any">Wielki Wybuch</string> <string name="account_settings_message_age_any">wszystkie</string>
<string name="account_settings_message_age_0">1 dzień</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_1">2 dni</string>
<string name="account_settings_message_age_2">3 dni</string> <string name="account_settings_message_age_2">3 dni</string>
<string name="account_settings_message_age_7">ostatni tydzień</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_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_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_label">Synchronizacja usunięć</string>
<string name="account_settings_sync_remote_deletetions_summary">Remove messages when deleted on server</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> <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_label">Poczta przychodząca</string>
<string name="account_settings_incoming_summary">Ustawienia serwera poczty przychodzącej</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_outgoing_summary">Ustawienia serwera poczty wychodzącej (SMTP)</string>
<string name="account_settings_add_account_label">Dodaj kolejne konto</string> <string name="account_settings_add_account_label">Dodaj kolejne konto</string>
<string name="account_settings_description_label">Nazwa konta</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="notifications_title">Powiadomienia</string>
<string name="account_settings_ring_summary">Odtwórz dzwięk, gdy są nowe wiadomości</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_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_label">Schematy wibracji</string>
<string name="account_settings_vibrate_pattern_default">Domyślny</string> <string name="account_settings_vibrate_pattern_default">Domyślny</string>
<string name="account_settings_vibrate_pattern_1">Schemat 1</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_label">Sygnatura</string>
<string name="account_settings_signature_summary">Dodawaj sygnaturę do każdej wysyłanej wiadomości</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="default_identity_description">Tożsamość domyślna</string>
<string name="choose_identity">Wybierz tożsamość</string> <string name="choose_identity">Wybierz tożsamość</string>
<string name="choose_identity_title">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="choose_account_title">Wybierz konto/tożsamość</string>
<string name="send_as">Wyślij jako</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="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_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> <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_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_unattached_first">Wiadomości bez załączników jako pierwsze</string>
<string name="sort_by">Sortowanie...</string> <string name="sort_by">Sortuj wg…</string>
<string name="sort_by_date">Po dacie</string> <string name="sort_by_date">Daty</string>
<string name="sort_by_sender">Po nadawcy</string> <string name="sort_by_arrival">Daty otrzymania</string>
<string name="sort_by_subject">Po temacie</string> <string name="sort_by_sender">Nadawcy</string>
<string name="sort_by_flag">Po gwiazdkach</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_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="message_web_view_error">%s</string>
<string name="account_delete_dlg_title">Usuwanie</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 nie masz płatnego konta typu \"Plus\". W takim przypadku musisz z poczty
korzystać w dotychczasowy sposób, za pośrednictwem przeglądarki.</string> 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> <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>--> <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>
<!-- 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>--> <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>
<!-- 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>--> <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>
<!-- 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_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_title">Nieznany certyfikat</string>
<string name="account_setup_failed_dlg_invalid_certificate_accept">Akceptuj</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="account_setup_failed_dlg_invalid_certificate_reject">Odrzuć</string>
<string name="message_help_key">Del lub D - Usuń\u000AR - <string name="message_help_key">
Odpowiedz\u000AA - Odp. wszystim\u000AF - Prześlij dalej\u000AJ lub P - Poprzednia Del lub D - Usuń\n
wiadomość\u000AK, N - Następna wiadomość\u000AM - Przenieś\u000AY - Skopiuj\u000AZ - Pomniejsz\u000AShift-Z - R - Odpowiedz\n
Powiększ\u000aG - Gwiazdka</string> A - Odp. wszystim\n
<string name="message_list_help_key">Del lub D - Usuń\u000AR - F - Prześlij dalej\n
Odpowiedz\u000AA - Odp. wszystkim\u000AC - Napisz\u000AF - Prześlij dalej\u000aM - J lub P - Poprzednia wiadomość\n
Przenieś\u000AY - Skopiuj\u000AG - Gwiazdka\u000AO - Typ sortowania\u000AI - Porządek sortowania\u000AQ K, N - Następna wiadomość\n
- Widok folderów\u000AS - Zaznacz/odznacz</string> M - Przenieś\n
Y - Skopiuj\n
Z - Pomniejsz\n
Shift-Z - Powiększ\n
G - Gwiazdka
</string>
<string name="folder_list_help_key"> <string name="message_list_help_key">
1 - Wyśw. tylko foldery 1szej klasy\u000A Del lub D - Usuń\n
2 - Wyśw. foldery 1szej i 2giej klasy\u000A R - Odpowiedz\n
3 - Wyśw. wszystkie poza folderami 2giej klasy\u000A A - Odp. wszystkim\n
4 - Wyświetl wszystkie foldery\u000A C - Napisz\n
Q - Lista kont\u000A F - Prześlij dalej\n
S - Edytuj ustawienia konta</string> 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_label">Wyświetlanie folderów</string>
<string name="folder_list_display_mode_all">Wszystkie</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="setting_theme_light">Jasna</string>
<string name="display_preferences">Ustawienia globalne</string> <string name="display_preferences">Ustawienia globalne</string>
<string name="global_preferences">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="privacy_preferences">Prywatność</string>
<string name="network_preferences">Sieć</string> <string name="network_preferences">Sieć</string>
<string name="interaction_preferences">Interakcja</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="no_message_seletected_toast">Nie wybrano wiadomości</string>
<string name="date_format_label">Format daty</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_short">SHORT</string>
<string name="date_format_medium">MEDIUM</string> <string name="date_format_medium">MEDIUM</string>
<string name="date_format_common">dd-MMM-yyyy</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_title">Gesty</string>
<string name="gestures_summary">Pozwól na sterowanie gestami</string> <string name="gestures_summary">Pozwól na sterowanie gestami</string>
<string name="compact_layouts_title">Wygląd kopaktowy</string> <string name="compact_layouts_title">Wygląd kompaktowy</string>
<string name="compact_layouts_summary">Dopaduj wygląd, aby wyświetlać więcej na każdej stronie</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_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> <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_title">Przycisk \"Cofnij\"</string>
<string name="manage_back_summary">Przycisk \"Cofnij\" zawsze cofa o jeden poziom wyżej</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_title">Pokaż zintegrowaną</string>
<string name="start_integrated_inbox_summary">Wyświetl \"Zintegrowany Inbox\" po uruchomieniu programu</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_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_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_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="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="unread_modifier"> - Nieprzeczytane</string>
<string name="search_all_messages_title">Wszystkie wiadomości</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="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="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="folder_settings_include_in_integrated_inbox_summary">Pokazuj nieprzeczytane wiadomości w zintegrowanym widoku</string>
<string name="account_settings_searchable_label">Przeszukiwalne foldery</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_date">Data wiadomości</string>
<string name="font_size_message_list_preview">Pogdląd</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_sender">Nadawca</string>
<string name="font_size_message_view_to">Adresat (Do:)</string> <string name="font_size_message_view_to">Adresat (Do:)</string>
<string name="font_size_message_view_cc">Odbiorca kopii (DW:)</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_date">Data</string>
<string name="font_size_message_view_content">Treść wiadomości</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_tiniest">Najdrobniejsza</string>
<string name="font_size_tiny">Drobna</string> <string name="font_size_tiny">Drobna</string>
<string name="font_size_smaller">Mniejsza</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_activity_not_found">Nie znaleiono odpowiedniej aplikacji.</string>
<string name="error_apg_version_not_supported">Zainstalowana wersja APG nie jest wspierana.</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_crypto_sign">Podpisz</string>
<string name="btn_encrypt">Zakoduj</string> <string name="btn_encrypt">Szyfruj</string>
<string name="btn_decrypt">Zdekoduj</string> <string name="btn_decrypt">Deszyfruj</string>
<string name="btn_verify">Potwiedź</string> <string name="btn_verify">Potwiedź</string>
<string name="unknown_crypto_signature_user_id">&lt;nieznany&gt;</string> <string name="unknown_crypto_signature_user_id">&lt;nieznany&gt;</string>
<string name="key_id">id: %s</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_dlg_title">Zapisać szkic?</string>
<string name="save_or_discard_draft_message_instructions_fmt">Zapisać czy porzucić wiadomość?</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="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> <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> <string name="dialog_confirm_spam_title">Potwierdź przeniesienie do spamu</string>
<plurals name="dialog_confirm_spam_message"> <plurals name="dialog_confirm_spam_message">
<item quantity="one">Na pewno przenieśc do spamu?</item> <item quantity="one">Na pewno przenieść wiadomość do spamu?</item>
<item quantity="other">Na pewno przenieśc do spamu?</item> <item quantity="other">Na pewno przenieść <xliff:g id="message_count">%1$d</xliff:g> wiadomości 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
-->
</plurals> </plurals>
<string name="dialog_confirm_spam_confirm_button">Tak</string> <string name="dialog_confirm_spam_confirm_button">Tak</string>
<string name="dialog_confirm_spam_cancel_button">Nie</string> <string name="dialog_confirm_spam_cancel_button">Nie</string>
<string name="dialog_attachment_progress_title">Pobieranie załącznika</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_to_me_sigil">»</string>
<string name="messagelist_sent_cc_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>--> <string name="import_export_action">Kopia zapasowa</string>
<!-- NEW: <string name="settings_export_account">Export account settings</string>--> <string name="settings_export_account">Ustawienia konta</string>
<!-- NEW: <string name="settings_export_all">Export settings and accounts</string>--> <string name="settings_export_all">Eksport</string>
<!-- NEW: <string name="settings_import_dialog_title">Import</string>--> <string name="settings_import_dialog_title">Importuj</string>
<!-- NEW: <string name="settings_export_dialog_title">Export</string>--> <string name="settings_export_dialog_title">Eksportuj</string>
<!-- NEW: <string name="settings_import">Import settings</string>--> <string name="settings_import">Import</string>
<!-- NEW: <string name="settings_import_selection">Import selection</string>--> <string name="settings_import_selection">Zaznaczenie importu</string>
<!-- NEW: <string name="settings_import_global_settings">Global settings</string>--> <string name="settings_import_global_settings">Ogólne ustawienia</string>
<!-- NEW: <string name="settings_exporting">Exporting settings...</string>--> <string name="settings_exporting">Eksportowanie ustawień…</string>
<!-- NEW: <string name="settings_importing">Importing settings...</string>--> <string name="settings_importing">Importowanie ustawień…</string>
<!-- NEW: <string name="settings_import_scanning_file">Scanning file...</string>--> <string name="settings_import_scanning_file">Skanowanie pliku…</string>
<!-- NEW: <string name="settings_export_success">Saved exported settings to <xliff:g id="filename">%s</xliff:g></string>--> <string name="settings_export_success">Zapisano ustawienia do <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>--> <string name="settings_import_global_settings_success">Importowano ustawienia z <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>--> <string name="settings_import_success">Importowano <xliff:g id="accounts">%s</xliff:g> z <xliff:g id="filename">%s</xliff:g></string>
<!-- NEW: <plurals name="settings_import_success"> <plurals name="settings_import_success">
<item quantity="one">1 account</item> <item quantity="one">1 konto</item>
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> accounts</item> <item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> kont</item>
</plurals>--> </plurals>
<!-- NEW: <string name="settings_export_failure">Failed to export settings</string>--> <string name="settings_export_failure">Błąd eksportu</string>
<!-- NEW: <string name="settings_import_failure">Failed to import any settings from <xliff:g id="filename">%s</xliff:g></string>--> <string name="settings_import_failure">Błąd importu z <xliff:g id="filename">%s</xliff:g></string>
<!-- NEW: <string name="settings_export_success_header">Export succeeded</string>--> <string name="settings_export_success_header">Eksport udany</string>
<!-- NEW: <string name="settings_export_failed_header">Export failed</string>--> <string name="settings_export_failed_header">Eksport nieudany</string>
<!-- NEW: <string name="settings_import_success_header">Import succeeded</string>--> <string name="settings_import_success_header">Import udany</string>
<!-- NEW: <string name="settings_import_failed_header">Import failed</string>--> <string name="settings_import_failed_header">Import nieudany</string>
<!-- NEW: <string name="settings_import_activate_account_header">Activate account</string>--> <string name="settings_import_activate_account_header">Aktywuj konto</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>--> <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>
<!-- NEW: <plurals name="settings_import_server_passwords"> <plurals name="settings_import_server_passwords">
<item quantity="one">server password</item> <item quantity="one">hasło serwera</item>
<item quantity="other">server passwords</item> <item quantity="other">hasła serwera</item>
</plurals>--> </plurals>
<!-- NEW: <string name="settings_import_incoming_server">Incoming server (<xliff:g id="hostname">%s</xliff:g>):</string>--> <string name="settings_import_incoming_server">Serwer przychodzący (<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>--> <string name="settings_import_outgoing_server">Serwer wychodzący (<xliff:g id="hostname">%s</xliff:g>):</string>
<!-- NEW: <plurals name="settings_import_setting_passwords"> <plurals name="settings_import_setting_passwords">
<item quantity="one">Setting password...</item> <item quantity="one">Ustawiam hasło...</item>
<item quantity="other">Setting passwords...</item> <item quantity="other">Ustawiam haseła...</item>
</plurals>--> </plurals>
<!-- NEW: <string name="settings_import_use_incoming_server_password">Use the incoming server password</string>--> <string name="settings_import_use_incoming_server_password">Użyj hasła serwera przychodzącego</string>
<!-- NEW: <string name="activate_account_action">Activate</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> <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>--> <string name="settings_attachment_default_path">Zapisuj załączniki do…</string>
<!-- NEW: <string name="attachment_save_title">Save attachment</string>--> <string name="attachment_save_title">Zapisz załączniki</string>
<!-- NEW: <string name="attachment_save_desc">No file browser found. Where would you like to save this attachment?</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>--> <string name="manage_accounts_move_up_action">W górę</string>
<!-- NEW: <string name="manage_accounts_move_down_action">Move down</string>--> <string name="manage_accounts_move_down_action">W dół</string>
<!-- NEW: <string name="manage_accounts_moving_message">Moving account...</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> </resources>

View File

@ -7,7 +7,7 @@
<string name="app_license">Лицензия Apache License, Version 2.0.</string> <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_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_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="app_emoji_icons">Иконки настроения: <xliff:g id="app_emoji_icons_link">%s</xliff:g></string>
<string name="read_attachment_label">читать вложения электронной почты</string> <string name="read_attachment_label">читать вложения электронной почты</string>
@ -108,9 +108,9 @@
<string name="view_hide_details_action">Показать/спрятать подробности</string> <string name="view_hide_details_action">Показать/спрятать подробности</string>
<string name="add_cc_bcc_action">Добавить Копию/СК</string> <string name="add_cc_bcc_action">Добавить Копию/СК</string>
<string name="edit_subject_action">Редактировать тему</string> <string name="edit_subject_action">Редактировать тему</string>
<!-- NEW: <string name="read_receipt">Read receipt</string>--> <string name="read_receipt">Уведомление о прочтении</string>
<!-- NEW: <string name="read_receipt_enabled">Read receipt will be requested</string>--> <string name="read_receipt_enabled">Уведомление о прочтении будет запрошено</string>
<!-- NEW: <string name="read_receipt_disabled">Read receipt will not be requested</string>--> <string name="read_receipt_disabled">Уведомление о прочтении не будет запрошено</string>
<string name="add_attachment_action">Добавить вложение</string> <string name="add_attachment_action">Добавить вложение</string>
<string name="add_attachment_action_image">Добавить вложение (Изображение)</string> <string name="add_attachment_action_image">Добавить вложение (Изображение)</string>
<string name="add_attachment_action_video">Добавить вложение (Видео)</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_fixedwidth_summary">Использовать шрифт фиксированной ширины при показе плоского текста</string>
<string name="global_settings_messageview_return_to_list_label">Вернуться к списку после удаления</string> <string name="global_settings_messageview_return_to_list_label">Вернуться к списку после удаления</string>
<string name="global_settings_messageview_return_to_list_summary">Вернуться к списку сообщений после удаления сообщения</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>--> <string name="global_settings_messageview_show_next_label">Показать след. сообщение после удаления</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_summary">По умолчанию показывать след. сообщение после удаления</string>
<string name="global_settings_confirm_actions_title">Подтверждение действий</string> <string name="global_settings_confirm_actions_title">Подтверждение действий</string>
<string name="global_settings_confirm_actions_summary">Показывать диалог при совершении действий</string> <string name="global_settings_confirm_actions_summary">Показывать диалог при совершении действий</string>
@ -340,7 +340,7 @@
<string name="quiet_time">Время тишины</string> <string name="quiet_time">Время тишины</string>
<string name="quiet_time_description">Запретить сигнал, вибрацию, мигание в ночное время</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="quiet_time_ends">Конец времени тишины</string>
<string name="account_setup_basics_title">Установить новый адрес</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_on_poll">В ходе каждого запроса</string>
<string name="account_setup_expunge_policy_manual">Только вручную</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="account_setup_incoming_imap_path_prefix_label">Префикс пути IMAP</string>
<string name="drafts_folder_label">Имя папки Черновиков</string> <string name="drafts_folder_label">Имя папки Черновиков</string>
@ -550,11 +550,11 @@
<string name="account_settings_reply_after_quote_summary">При ответе цитата будет выше ответа.</string> <string name="account_settings_reply_after_quote_summary">При ответе цитата будет выше ответа.</string>
<string name="account_settings_message_format_label">Формат сообщения</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> <string name="account_settings_message_format_html">HTML (сохранять изображения и форматирование)</string>
<!-- NEW: <string name="account_settings_message_read_receipt_label">Read receipt</string>--> <string name="account_settings_message_read_receipt_label">Уведомление о прочтении</string>
<!-- NEW: <string name="account_settings_message_read_receipt_summary">Always request a read receipt</string>--> <string name="account_settings_message_read_receipt_summary">Всегда запрашивать уведомление о прочтении</string>
<string name="account_settings_quote_style_label">Стиль цитирования</string> <string name="account_settings_quote_style_label">Стиль цитирования</string>
<string name="account_settings_quote_style_prefix">Префикс (например Gmail, Pine)</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_label">Цвет учётной записи</string>
<string name="account_settings_color_summary">Выберите цвет учётной записи, используемый в папке и списке учётных записей</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_led_color_summary">Выбрать цвет мигания для учётной записи</string>
<string name="account_settings_mail_display_count_label">Количество показываемых сообщений</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_ring_summary">Звонок при новых сообщениях</string>
<string name="account_settings_vibrate_enable">Вибрация</string> <string name="account_settings_vibrate_enable">Вибрация</string>
<string name="account_settings_vibrate_summary">Вибрация при новых сообщениях</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_default">По умолчанию</string>
<string name="account_settings_vibrate_pattern_1">паттерн 1</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_2">Вибрация 2</string>
<string name="account_settings_vibrate_pattern_3">паттерн 3</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_4">Вибрация 4</string>
<string name="account_settings_vibrate_pattern_5">паттерн 5</string> <string name="account_settings_vibrate_pattern_5">Вибрация 5</string>
<string name="account_settings_vibrate_times">Повторять вибрацию</string> <string name="account_settings_vibrate_times">Повторять вибрацию</string>
<string name="account_settings_ringtone">Выбор мелодии</string> <string name="account_settings_ringtone">Выбор мелодии</string>
<string name="account_settings_led_label">Мигать</string> <string name="account_settings_led_label">Мигать</string>
@ -839,7 +839,7 @@
<string name="background_ops_never">Никогда</string> <string name="background_ops_never">Никогда</string>
<string name="background_ops_always">Всегда</string> <string name="background_ops_always">Всегда</string>
<string name="background_ops_enabled">Когда \'Фоновый режим\' включен</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> <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_date">Дата</string>
<string name="font_size_message_view_content">Тело сообщения</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_tiny">Крошечный</string>
<string name="font_size_smaller">Еще меньше</string> <string name="font_size_smaller">Еще меньше</string>
<string name="font_size_small">Маленький</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_large">Большой</string>
<string name="font_size_larger">Наибольший</string> <string name="font_size_larger">Наибольший</string>
@ -1033,46 +1033,49 @@
<string name="messagelist_sent_cc_me_sigil"></string> <string name="messagelist_sent_cc_me_sigil"></string>
<string name="error_unable_to_connect">Не получается соединиться.</string> <string name="error_unable_to_connect">Не получается соединиться.</string>
<!-- NEW: <string name="import_export_action">Settings Import &amp; Export</string>--> <string name="import_export_action">Импорт и экспорт настроек</string>
<!-- NEW: <string name="settings_export_account">Export account settings</string>-->
<!-- NEW: <string name="settings_export_all">Export settings and accounts</string>--> <string name="settings_export_account">Экспортировать настройки учетной записи</string>
<!-- NEW: <string name="settings_import_dialog_title">Import</string>--> <string name="settings_export_all">Экспортировать настройки и учетные записи</string>
<!-- NEW: <string name="settings_export_dialog_title">Export</string>--> <string name="settings_import_dialog_title">Импорт</string>
<!-- NEW: <string name="settings_import">Import settings</string>--> <string name="settings_export_dialog_title">Экспорт</string>
<!-- NEW: <string name="settings_import_selection">Import selection</string>--> <string name="settings_import">Импортировать настройки</string>
<!-- NEW: <string name="settings_import_global_settings">Global settings</string>--> <string name="settings_import_selection">Импортировать выбранное</string>
<!-- NEW: <string name="settings_exporting">Exporting settings...</string>--> <string name="settings_import_global_settings">Глобальные настройки</string>
<!-- NEW: <string name="settings_importing">Importing settings...</string>--> <string name="settings_exporting">Экспорт настроек...</string>
<!-- NEW: <string name="settings_import_scanning_file">Scanning file...</string>--> <string name="settings_importing">Импорт настроек...</string>
<!-- NEW: <string name="settings_export_success">Saved exported settings to <xliff:g id="filename">%s</xliff:g></string>--> <string name="settings_import_scanning_file">Сканирование файла...</string>
<!-- NEW: <string name="settings_import_global_settings_success">Imported global settings from <xliff:g id="filename">%s</xliff:g></string>--> <string name="settings_export_success">Настройки были экспортированы в <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>--> <string name="settings_import_global_settings_success">Глобальные настройки были импортированы из <xliff:g id="filename">%s</xliff:g></string>
<!-- NEW: <plurals name="settings_import_success"> <string name="settings_import_success">Импортирован <xliff:g id="accounts">%s</xliff:g> из <xliff:g id="filename">%s</xliff:g></string>
<item quantity="one">1 account</item> <plurals name="settings_import_success">
<item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> accounts</item> <item quantity="one">1 учетная запись</item>
</plurals>--> <item quantity="few"><xliff:g id="numAccounts">%s</xliff:g> учетных записи</item>
<!-- NEW: <string name="settings_export_failure">Failed to export settings</string>--> <item quantity="other"><xliff:g id="numAccounts">%s</xliff:g> учетных записей</item>
<!-- NEW: <string name="settings_import_failure">Failed to import any settings from <xliff:g id="filename">%s</xliff:g></string>--> </plurals>
<!-- NEW: <string name="settings_export_success_header">Export succeeded</string>--> <string name="settings_export_failure">Не удалось экспортировать настройки</string>
<!-- NEW: <string name="settings_export_failed_header">Export failed</string>--> <string name="settings_import_failure">Не удалось экспортировать настройки из <xliff:g id="filename">%s</xliff:g></string>
<!-- NEW: <string name="settings_import_success_header">Import succeeded</string>--> <string name="settings_export_success_header">Экспорт удался</string>
<!-- NEW: <string name="settings_import_failed_header">Import failed</string>--> <string name="settings_export_failed_header">Экспорт не удался</string>
<!-- NEW: <string name="settings_import_activate_account_header">Activate account</string>--> <string name="settings_import_success_header">Импорт удался</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>--> <string name="settings_import_failed_header">Импорт не удался</string>
<!-- NEW: <plurals name="settings_import_server_passwords"> <string name="settings_import_activate_account_header">Активировать учетную запись</string>
<item quantity="one">server password</item> <string name="settings_import_activate_account_intro">Чтобы использовать учетную запись \"<xliff:g id="account">%s</xliff:g>\", Вам необходимо указать <xliff:g id="server_passwords">%s.</xliff:g></string>
<item quantity="other">server passwords</item> <plurals name="settings_import_server_passwords">
</plurals>--> <item quantity="one">пароль</item>
<!-- NEW: <string name="settings_import_incoming_server">Incoming server (<xliff:g id="hostname">%s</xliff:g>):</string>--> <item quantity="few">пароля</item>
<!-- NEW: <string name="settings_import_outgoing_server">Outgoing server (<xliff:g id="hostname">%s</xliff:g>):</string>--> <item quantity="other">паролей</item>
<!-- NEW: <plurals name="settings_import_setting_passwords"> </plurals>
<item quantity="one">Setting password...</item> <string name="settings_import_incoming_server">Сервер для входящей почты (<xliff:g id="hostname">%s</xliff:g>):</string>
<item quantity="other">Setting passwords...</item> <string name="settings_import_outgoing_server">Сервер для исходящей почты (<xliff:g id="hostname">%s</xliff:g>):</string>
</plurals>--> <plurals name="settings_import_setting_passwords">
<!-- NEW: <string name="settings_import_use_incoming_server_password">Use the incoming server password</string>--> <item quantity="one">Установка пароля...</item>
<!-- NEW: <string name="activate_account_action">Activate</string>--> <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> <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_title">Сохранить вложение</string>
<string name="attachment_save_desc">Не найден браузер файлов. Где бы вы хотели сохранить вложение?</string> <string name="attachment_save_desc">Не найден браузер файлов. Где бы вы хотели сохранить вложение?</string>
<!-- NEW: <string name="manage_accounts_move_up_action">Move up</string>--> <string name="manage_accounts_move_up_action">Переместить вверх</string>
<!-- NEW: <string name="manage_accounts_move_down_action">Move down</string>--> <string name="manage_accounts_move_down_action">Переместить вниз</string>
<!-- NEW: <string name="manage_accounts_moving_message">Moving account...</string>--> <string name="manage_accounts_moving_message">Перемещение учетной записи...</string>
</resources> </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_show_more_attachments_action">More&#8230;</string>
<string name="message_view_fetching_attachment_toast">Fetching attachment.</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_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_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' --> <!-- 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> <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_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_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">Quiet Time</string>
<string name="quiet_time_description">Disable ringing, buzzing and flashing at night</string> <string name="quiet_time_description">Disable ringing, buzzing and flashing at night</string>
<string name="quiet_time_starts">Quiet Time starts</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="open_market">Open Market</string>
<string name="close">Close</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_view_action">Open for viewing</string>
<string name="webview_contextmenu_link_share_action">Share link</string> <string name="webview_contextmenu_link_share_action">Share link</string>
<string name="webview_contextmenu_link_copy_action">Copy link to clipboard</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> <resources>
<style name="Theme.K9Dialog" parent="@android:Theme.Light"> <style name="Theme.K9Dialog" parent="@android:Theme.Light">
<item name="android:windowFrame">@null</item> <item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@drawable/popup_background</item> <item name="android:windowBackground">@drawable/popup_background</item>
@ -6,8 +8,15 @@
<item name="android:windowIsFloating">true</item> <item name="android:windowIsFloating">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowContentOverlay">@drawable/panel_separator</item> <item name="android:windowContentOverlay">@drawable/panel_separator</item>
</style> </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> </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" android:dependency="messagelist_show_contact_name"
/> />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory
@ -242,6 +243,50 @@
android:dialogTitle="@string/global_settings_confirm_actions_title" android:dialogTitle="@string/global_settings_confirm_actions_title"
android:positiveButtonText="@android:string/ok" android:positiveButtonText="@android:string/ok"
android:negativeButtonText="@android:string/cancel" /> 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>
<PreferenceScreen <PreferenceScreen

View File

@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; 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_EMAIL_KEY = "email";
public static final String IDENTITY_DESCRIPTION_KEY = "description"; 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> * <pre>
@ -124,6 +159,8 @@ public class Account implements BaseAccount {
private boolean mAutoUploadOnMove; private boolean mAutoUploadOnMove;
private boolean mPushPollOnConnect; private boolean mPushPollOnConnect;
private boolean mNotifySync; private boolean mNotifySync;
private SortType mSortType;
private HashMap<SortType, Boolean> mSortAscending = new HashMap<SortType, Boolean>();
private ShowPictures mShowPictures; private ShowPictures mShowPictures;
private boolean mEnableMoveButtons; private boolean mEnableMoveButtons;
private boolean mIsSignatureBeforeQuotedText; private boolean mIsSignatureBeforeQuotedText;
@ -215,6 +252,8 @@ public class Account implements BaseAccount {
mFolderSyncMode = FolderMode.FIRST_CLASS; mFolderSyncMode = FolderMode.FIRST_CLASS;
mFolderPushMode = FolderMode.FIRST_CLASS; mFolderPushMode = FolderMode.FIRST_CLASS;
mFolderTargetMode = FolderMode.NOT_SECOND_CLASS; mFolderTargetMode = FolderMode.NOT_SECOND_CLASS;
mSortType = DEFAULT_SORT_TYPE;
mSortAscending.put(DEFAULT_SORT_TYPE, DEFAULT_SORT_ASCENDING);
mShowPictures = ShowPictures.NEVER; mShowPictures = ShowPictures.NEVER;
mEnableMoveButtons = false; mEnableMoveButtons = false;
mIsSignatureBeforeQuotedText = false; mIsSignatureBeforeQuotedText = false;
@ -338,6 +377,15 @@ public class Account implements BaseAccount {
(random.nextInt(0x70) * 0xffff) + (random.nextInt(0x70) * 0xffff) +
0xff000000); 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 { try {
mShowPictures = ShowPictures.valueOf(prefs.getString(mUuid + ".showPicturesEnum", mShowPictures = ShowPictures.valueOf(prefs.getString(mUuid + ".showPicturesEnum",
ShowPictures.NEVER.name())); ShowPictures.NEVER.name()));
@ -472,6 +520,8 @@ public class Account implements BaseAccount {
editor.remove(mUuid + ".messageFormatAuto"); editor.remove(mUuid + ".messageFormatAuto");
editor.remove(mUuid + ".quoteStyle"); editor.remove(mUuid + ".quoteStyle");
editor.remove(mUuid + ".quotePrefix"); editor.remove(mUuid + ".quotePrefix");
editor.remove(mUuid + ".sortTypeEnum");
editor.remove(mUuid + ".sortAscending");
editor.remove(mUuid + ".showPicturesEnum"); editor.remove(mUuid + ".showPicturesEnum");
editor.remove(mUuid + ".replyAfterQuote"); editor.remove(mUuid + ".replyAfterQuote");
editor.remove(mUuid + ".stripSignature"); editor.remove(mUuid + ".stripSignature");
@ -606,6 +656,8 @@ public class Account implements BaseAccount {
editor.putString(mUuid + ".spamFolderName", mSpamFolderName); editor.putString(mUuid + ".spamFolderName", mSpamFolderName);
editor.putString(mUuid + ".autoExpandFolderName", mAutoExpandFolderName); editor.putString(mUuid + ".autoExpandFolderName", mAutoExpandFolderName);
editor.putInt(mUuid + ".accountNumber", mAccountNumber); 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.putString(mUuid + ".showPicturesEnum", mShowPictures.name());
editor.putBoolean(mUuid + ".enableMoveButtons", mEnableMoveButtons); editor.putBoolean(mUuid + ".enableMoveButtons", mEnableMoveButtons);
editor.putString(mUuid + ".folderDisplayMode", mFolderDisplayMode.name()); editor.putString(mUuid + ".folderDisplayMode", mFolderDisplayMode.name());
@ -984,6 +1036,14 @@ Log.d("ASH", "setTrashFolderName() attempting change of folder.setLocalOnly()");
mArchiveFolderName = archiveFolderName; 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() { public synchronized String getSpamFolderName() {
return mSpamFolderName; return mSpamFolderName;
} }
@ -1054,6 +1114,25 @@ Log.d("ASH", "setTrashFolderName() attempting change of folder.setLocalOnly()");
this.mNotifySync = showOngoing; 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() { public synchronized ShowPictures getShowPictures() {
return mShowPictures; return mShowPictures;
} }
@ -1333,7 +1412,6 @@ Log.d("ASH", "setTrashFolderName() attempting change of folder.setLocalOnly()");
* Only to be called durin initial account-setup!<br/> * Only to be called durin initial account-setup!<br/>
* Side-effect: changes {@link #mLocalStorageProviderId}. * Side-effect: changes {@link #mLocalStorageProviderId}.
* *
* @param context
* @param newStorageProviderId * @param newStorageProviderId
* Never <code>null</code>. * Never <code>null</code>.
* @throws MessagingException * @throws MessagingException

View File

@ -25,22 +25,11 @@ import android.widget.ResourceCursorAdapter;
import android.widget.TextView; import android.widget.TextView;
public class EmailAddressAdapter extends ResourceCursorAdapter { 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 final Contacts mContacts;
private EmailAddressAdapter(Context context) { public EmailAddressAdapter(Context context) {
super(context, R.layout.recipient_dropdown_item, null); super(context, R.layout.recipient_dropdown_item, null);
mContacts = Contacts.getInstance(context); mContacts = Contacts.getInstance(context.getApplicationContext());
} }
@Override @Override

View File

@ -183,8 +183,15 @@ public class K9 extends Application {
private static String mQuietTimeEnds = null; private static String mQuietTimeEnds = null;
private static boolean compactLayouts = false; private static boolean compactLayouts = false;
private static String mAttachmentDefaultPath = ""; 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 useGalleryBugWorkaround = false;
private static boolean galleryBuggy; private static boolean galleryBuggy;
@ -436,6 +443,13 @@ public class K9 extends Application {
editor.putBoolean("messageViewReturnToList", mMessageViewReturnToList); editor.putBoolean("messageViewReturnToList", mMessageViewReturnToList);
editor.putBoolean("messageViewShowNext", mMessageViewShowNext); 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.putString("language", language);
editor.putInt("theme", theme); editor.putInt("theme", theme);
editor.putBoolean("useGalleryBugWorkaround", useGalleryBugWorkaround); editor.putBoolean("useGalleryBugWorkaround", useGalleryBugWorkaround);
@ -587,6 +601,13 @@ public class K9 extends Application {
mMessageViewReturnToList = sprefs.getBoolean("messageViewReturnToList", false); mMessageViewReturnToList = sprefs.getBoolean("messageViewReturnToList", false);
mMessageViewShowNext = sprefs.getBoolean("messageViewShowNext", 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()); useGalleryBugWorkaround = sprefs.getBoolean("useGalleryBugWorkaround", K9.isGalleryBuggy());
mConfirmDelete = sprefs.getBoolean("confirmDelete", false); mConfirmDelete = sprefs.getBoolean("confirmDelete", false);
@ -679,7 +700,7 @@ public class K9 extends Application {
} }
public static int getK9ThemeResourceId(int theme) { 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() { public static int getK9ThemeResourceId() {
@ -1033,6 +1054,48 @@ public class K9 extends Application {
K9.compactLayouts = compactLayouts; 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. * 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.*;
import com.fsck.k9.Account.FolderMode; import com.fsck.k9.Account.FolderMode;
import com.fsck.k9.activity.FolderInfoHolder; 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.Prefs;
import com.fsck.k9.activity.setup.AccountSettings; import com.fsck.k9.activity.setup.AccountSettings;
import com.fsck.k9.activity.setup.FolderSettings; import com.fsck.k9.activity.setup.FolderSettings;
@ -56,8 +57,11 @@ import java.util.Map;
*/ */
public class FolderList extends K9ListActivity { public class FolderList extends K9ListActivity {
/*
* Constants for showDialog() etc.
*/
private static final int DIALOG_MARK_ALL_AS_READ = 1; 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"; private static final String EXTRA_ACCOUNT = "account";
@ -420,6 +424,7 @@ public class FolderList extends K9ListActivity {
if (mAccount.getFolderPushMode() != FolderMode.NONE) { if (mAccount.getFolderPushMode() != FolderMode.NONE) {
MailService.actionRestartPushers(this, null); MailService.actionRestartPushers(this, null);
} }
mAdapter.getFilter().filter(null);
onRefresh(false); onRefresh(false);
} }
@ -432,44 +437,7 @@ public class FolderList extends K9ListActivity {
* Filter {@link #mAdapter} with the user-input. * Filter {@link #mAdapter} with the user-input.
*/ */
private void onEnterFilter() { private void onEnterFilter() {
final AlertDialog.Builder filterAlert = new AlertDialog.Builder(this); showDialog(DIALOG_FIND_FOLDER);
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();
} }
/* /*
@ -925,19 +893,59 @@ public class FolderList extends K9ListActivity {
@Override @Override
public Dialog onCreateDialog(int id) { public Dialog onCreateDialog(int id) {
switch (id) { switch (id) {
case DIALOG_MARK_ALL_AS_READ: case DIALOG_MARK_ALL_AS_READ:
return ConfirmationDialog.create(this, id, return ConfirmationDialog.create(this, id, R.string.mark_all_as_read_dlg_title,
R.string.mark_all_as_read_dlg_title, getString(R.string.mark_all_as_read_dlg_instructions_fmt,
getString(R.string.mark_all_as_read_dlg_instructions_fmt, mSelectedContextFolder.displayName),
mSelectedContextFolder.displayName), R.string.okay_action, R.string.cancel_action,
R.string.okay_action, new Runnable() {
R.string.cancel_action, @Override
new Runnable() { public void run() {
@Override markAllAsRead();
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); return super.onCreateDialog(id);
@ -946,14 +954,27 @@ public class FolderList extends K9ListActivity {
@Override @Override
public void onPrepareDialog(int id, Dialog dialog) { public void onPrepareDialog(int id, Dialog dialog) {
switch (id) { switch (id) {
case DIALOG_MARK_ALL_AS_READ: case DIALOG_MARK_ALL_AS_READ: {
((AlertDialog)dialog).setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt, AlertDialog alertDialog = (AlertDialog) dialog;
mSelectedContextFolder.displayName)); 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: // Place the cursor at the end of the text
super.onPrepareDialog(id, dialog); input.setSelection(input.getText().length());
break;
}
default: {
super.onPrepareDialog(id, dialog);
}
} }
} }
@ -1451,6 +1472,11 @@ public class FolderList extends K9ListActivity {
* @author Marcus@Wolschon.biz * @author Marcus@Wolschon.biz
*/ */
public class FolderListFilter extends Filter { public class FolderListFilter extends Filter {
private CharSequence mSearchTerm;
public CharSequence getSearchTerm() {
return mSearchTerm;
}
/** /**
* Do the actual search. * Do the actual search.
@ -1460,6 +1486,7 @@ public class FolderList extends K9ListActivity {
*/ */
@Override @Override
protected FilterResults performFiltering(CharSequence searchTerm) { protected FilterResults performFiltering(CharSequence searchTerm) {
mSearchTerm = searchTerm;
FilterResults results = new FilterResults(); FilterResults results = new FilterResults();
if ((searchTerm == null) || (searchTerm.length() == 0)) { if ((searchTerm == null) || (searchTerm.length() == 0)) {

View File

@ -26,7 +26,6 @@ import android.content.pm.ActivityInfo;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Parcelable; import android.os.Parcelable;
@ -73,6 +72,7 @@ import com.fsck.k9.controller.MessagingController;
import com.fsck.k9.controller.MessagingListener; import com.fsck.k9.controller.MessagingListener;
import com.fsck.k9.crypto.CryptoProvider; import com.fsck.k9.crypto.CryptoProvider;
import com.fsck.k9.crypto.PgpData; import com.fsck.k9.crypto.PgpData;
import com.fsck.k9.helper.ContactItem;
import com.fsck.k9.helper.Contacts; import com.fsck.k9.helper.Contacts;
import com.fsck.k9.helper.Utility; import com.fsck.k9.helper.Utility;
import com.fsck.k9.mail.Message.RecipientType; 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 MSG_DISCARDED_DRAFT = 6;
private static final int ACTIVITY_REQUEST_PICK_ATTACHMENT = 1; private static final int ACTIVITY_REQUEST_PICK_ATTACHMENT = 1;
private static final int CONTACT_PICKER_TO = 2; private static final int CONTACT_PICKER_TO = 4;
private static final int CONTACT_PICKER_CC = 3; private static final int CONTACT_PICKER_CC = 5;
private static final int CONTACT_PICKER_BCC = 4; 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]; 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); mContacts = Contacts.getInstance(MessageCompose.this);
mAddressAdapter = EmailAddressAdapter.getInstance(this); mAddressAdapter = new EmailAddressAdapter(this);
mAddressValidator = new EmailAddressValidator(); mAddressValidator = new EmailAddressValidator();
mChooseIdentityButton = (Button) findViewById(R.id.identity); 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_TO:
case CONTACT_PICKER_CC: case CONTACT_PICKER_CC:
case CONTACT_PICKER_BCC: case CONTACT_PICKER_BCC:
String email = mContacts.getEmailFromContactPicker(data); ContactItem contact = mContacts.extractInfoFromContactPickerIntent(data);
if (email.length() == 0) { if (contact == null) {
Toast.makeText(this, getString(R.string.error_contact_address_not_found), Toast.LENGTH_LONG).show(); Toast.makeText(this, getString(R.string.error_contact_address_not_found), Toast.LENGTH_LONG).show();
return; 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) { if (requestCode == CONTACT_PICKER_TO) {
addAddress(mToView, new Address(email, "")); addAddress(mToView, new Address(email, ""));
} else if (requestCode == CONTACT_PICKER_CC) { } 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; break;
} }
} }

View File

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

View File

@ -447,13 +447,18 @@ public class MessageView extends K9Activity implements OnClickListener {
mDelete.setEnabled(true); mDelete.setEnabled(true);
mNext.setEnabled(mNextMessage != null); mNext.setEnabled(mNextMessage != null);
mPrevious.setEnabled(mPreviousMessage != null); mPrevious.setEnabled(mPreviousMessage != null);
// Only enable the button if the Archive folder is not the current folder and not NONE. // If moving isn't support at all, then all of them must be disabled anyway.
mArchive.setEnabled(!mMessageReference.folderName.equals(mAccount.getArchiveFolderName()) && if (mController.isMoveCapable(mAccount)) {
!K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getArchiveFolderName())); // Only enable the button if they have an archive folder and it's not the current folder.
// Only enable the button if the Spam folder is not the current folder and not NONE. mArchive.setEnabled(!mMessageReference.folderName.equals(mAccount.getArchiveFolderName()) &&
mSpam.setEnabled(!mMessageReference.folderName.equals(mAccount.getSpamFolderName()) && !K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getArchiveFolderName()));
!K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getSpamFolderName())); // Only enable the button if the Spam folder is not the current folder and not NONE.
mMove.setEnabled(true); mSpam.setEnabled(!mMessageReference.folderName.equals(mAccount.getSpamFolderName()) &&
!K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getSpamFolderName()));
mMove.setEnabled(true);
} else {
disableMoveButtons();
}
} }
private void disableButtons() { private void disableButtons() {
@ -848,6 +853,14 @@ public class MessageView extends K9Activity implements OnClickListener {
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu); super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.message_view_option, 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())) { if (K9.FOLDER_NONE.equalsIgnoreCase(mAccount.getArchiveFolderName())) {
menu.findItem(R.id.archive).setVisible(false); menu.findItem(R.id.archive).setVisible(false);
} }
@ -959,7 +972,8 @@ public class MessageView extends K9Activity implements OnClickListener {
public void run() { public void run() {
if (!clonedMessage.isSet(Flag.X_DOWNLOADED_FULL) && if (!clonedMessage.isSet(Flag.X_DOWNLOADED_FULL) &&
!clonedMessage.isSet(Flag.X_DOWNLOADED_PARTIAL)) { !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.setHeaders(clonedMessage, account);
mMessageView.setOnFlagListener(new OnClickListener() { mMessageView.setOnFlagListener(new OnClickListener() {
@ -1012,7 +1026,7 @@ public class MessageView extends K9Activity implements OnClickListener {
} }
if ((MessageView.this.mMessage == null) || if ((MessageView.this.mMessage == null) ||
!MessageView.this.mMessage.isSet(Flag.X_DOWNLOADED_PARTIAL)) { !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.preference.Preference.OnPreferenceClickListener;
import android.widget.Toast; import android.widget.Toast;
import com.fsck.k9.Account;
import com.fsck.k9.K9; import com.fsck.k9.K9;
import com.fsck.k9.Preferences; import com.fsck.k9.Preferences;
import com.fsck.k9.R; 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_ENABLED = "quiet_time_enabled";
private static final String PREFERENCE_QUIET_TIME_STARTS = "quiet_time_starts"; 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_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_MESSAGEVIEW_MOBILE_LAYOUT = "messageview_mobile_layout";
private static final String PREFERENCE_BACKGROUND_OPS = "background_ops"; 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 com.fsck.k9.preferences.TimePickerPreference mQuietTimeEnds;
private Preference mAttachmentPathPreference; 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) { public static void actionPrefs(Context context) {
Intent i = new Intent(context, Prefs.class); 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() { private void saveSettings() {
@ -386,6 +424,12 @@ public class Prefs extends K9PreferenceActivity {
K9.setQuietTimeStarts(mQuietTimeStarts.getTime()); K9.setQuietTimeStarts(mQuietTimeStarts.getTime());
K9.setQuietTimeEnds(mQuietTimeEnds.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.setZoomControlsEnabled(mZoomControlsEnabled.isChecked());
K9.setAttachmentDefaultPath(mAttachmentPathPreference.getSummary().toString()); K9.setAttachmentDefaultPath(mAttachmentPathPreference.getSummary().toString());

View File

@ -135,47 +135,12 @@ public class MessagingController implements Runnable {
private Thread mThread; private Thread mThread;
private Set<MessagingListener> mListeners = new CopyOnWriteArraySet<MessagingListener>(); 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>(); private final ConcurrentHashMap<String, AtomicInteger> sendCount = new ConcurrentHashMap<String, AtomicInteger>();
ConcurrentHashMap<Account, Pusher> pushers = new ConcurrentHashMap<Account, Pusher>(); ConcurrentHashMap<Account, Pusher> pushers = new ConcurrentHashMap<Account, Pusher>();
private final ExecutorService threadPool = Executors.newCachedThreadPool(); 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 MessagingListener checkMailListener = null;
private MemorizingListener memorizingListener = new MemorizingListener(); 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: // ASH i seem to have deleted the four below isMoveCapable/isCopyCapable methods:
public boolean isMoveCapable(Message message) { public boolean isMoveCapable(Message message) {
return !message.getUid().startsWith(K9.LOCAL_UID_PREFIX); return !message.getUid().startsWith(K9.LOCAL_UID_PREFIX);
}/* }
public boolean isCopyCapable(Message message) { public boolean isCopyCapable(Message message) {
return isMoveCapable(message); return isMoveCapable(message);
}*/ }
public boolean isMoveCapable(final Account account) { public boolean isMoveCapable(final Account account) {
try { try {
@ -3513,7 +3478,7 @@ public class MessagingController implements Runnable {
Log.e(K9.LOG_TAG, "Exception while ascertaining move capability", me); Log.e(K9.LOG_TAG, "Exception while ascertaining move capability", me);
return false; return false;
} }
}/* }
public boolean isCopyCapable(final Account account) { public boolean isCopyCapable(final Account account) {
try { try {
Store localStore = account.getLocalStore(); Store localStore = account.getLocalStore();
@ -3523,7 +3488,7 @@ public class MessagingController implements Runnable {
Log.e(K9.LOG_TAG, "Exception while ascertaining copy capability", me); Log.e(K9.LOG_TAG, "Exception while ascertaining copy capability", me);
return false; return false;
} }
}*/ }
public void moveMessages(final Account account, final String srcFolder, final Message[] messages, final String destFolder, public void moveMessages(final Account account, final String srcFolder, final Message[] messages, final String destFolder,
final MessagingListener listener) { 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() { public Collection<Pusher> getPushers() {
return pushers.values(); 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.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
@ -174,13 +175,15 @@ public abstract class Contacts {
public abstract Intent contactPickerIntent(); public abstract Intent contactPickerIntent();
/** /**
* Given a contact picker intent, returns the primary email address of that * Given a contact picker intent, returns a {@code ContactItem} instance for that contact.
* contact.
* *
* @param intent The {@link Intent} returned by this contact picker. * @param intent
* @return The primary email address of the picked contact. * 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 * Does the device actually have a Contacts application suitable for

View File

@ -1,5 +1,7 @@
package com.fsck.k9.helper; package com.fsck.k9.helper;
import java.util.ArrayList;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
@ -191,23 +193,43 @@ public class ContactsSdk5 extends com.fsck.k9.helper.Contacts {
} }
@Override @Override
public String getEmailFromContactPicker(final Intent data) { public ContactItem extractInfoFromContactPickerIntent(final Intent data) {
Cursor cursor = null; Cursor cursor = null;
String email = ""; ArrayList<String> email = new ArrayList<String>();
try { try {
Uri result = data.getData(); Uri result = data.getData();
String displayName = null;
// Get the contact id from the Uri // Get the contact id from the Uri
String id = result.getLastPathSegment(); 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()) { if (cursor != null) {
email = cursor.getString(emailIdx); 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) { } catch (Exception e) {
Log.e(K9.LOG_TAG, "Failed to get email data", 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); 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.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -22,6 +23,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException; 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. * We've got a text part, so let's see if it needs to be processed further.
*/ */
String charset = getHeaderParameter(part.getContentType(), "charset"); 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)); 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.K9;
import com.fsck.k9.Preferences; import com.fsck.k9.Preferences;
import com.fsck.k9.R; import com.fsck.k9.R;
import com.fsck.k9.Account.MessageFormat;
import com.fsck.k9.controller.MessageRemovalListener; import com.fsck.k9.controller.MessageRemovalListener;
import com.fsck.k9.controller.MessageRetrievalListener; import com.fsck.k9.controller.MessageRetrievalListener;
import com.fsck.k9.controller.MessagingController; 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"); MimeBodyPart bp = new MimeBodyPart(body, "text/plain");
mp.addBodyPart(bp); 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 if (mAccount.getMessageFormat() == MessageFormat.HTML) {
// isn't multipart/alternative, then corral them into a new if (htmlContent != null) {
// multipart/alternative part and put that into the parent. TextBody body = new TextBody(htmlContent);
// If it turns out that this is the only part in the parent MimeBodyPart bp = new MimeBodyPart(body, "text/html");
// MimeMultipart, it'll get fixed below before we attach to mp.addBodyPart(bp);
// the message. }
if (textContent != null && htmlContent != null && !mimeType.equalsIgnoreCase("multipart/alternative")) {
MimeMultipart alternativeParts = mp; // If we have both text and html content and our MIME type
alternativeParts.setSubType("alternative"); // isn't multipart/alternative, then corral them into a new
mp = new MimeMultipart(); // multipart/alternative part and put that into the parent.
mp.addBodyPart(new MimeBodyPart(alternativeParts)); // 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")) { } else if (mimeType != null && mimeType.equalsIgnoreCase("text/plain")) {
// If it's text, add only the plain part. The MIME // 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.?$", ""); text = text.replaceAll("(?m)^On .*wrote.?$", "");
// Remove a more generic quote header from the preview // Remove a more generic quote header from the preview
text = text.replaceAll("(?m)^.*\\w+:$", ""); 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 // URLs in the preview should just be shown as "..." - They're not
// clickable and they usually overwhelm the preview // 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)+", " "); text = text.replaceAll("(\\r|\\n)+", " ");
// Collapse whitespace in the preview // Collapse whitespace in the preview
text = text.replaceAll("\\s+", " "); text = text.replaceAll("\\s+", " ");
// Remove any whitespace at the beginning and end of the string.
text = text.trim();
if (text.length() <= 512) { if (text.length() <= 512) {
return text; return text;
} else { } else {

View File

@ -9,6 +9,7 @@ import java.util.TreeMap;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import com.fsck.k9.Account; import com.fsck.k9.Account;
import com.fsck.k9.Account.SortType;
import com.fsck.k9.K9; import com.fsck.k9.K9;
import com.fsck.k9.R; import com.fsck.k9.R;
import com.fsck.k9.Account.FolderMode; import com.fsck.k9.Account.FolderMode;
@ -24,6 +25,11 @@ public class AccountSettings {
Map<String, TreeMap<Integer, SettingsDescription>> s = Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>(); 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( s.put("archiveFolderName", Settings.versions(
new V(1, new StringSetting("Archive")) new V(1, new StringSetting("Archive"))
)); ));
@ -162,6 +168,12 @@ public class AccountSettings {
s.put("sentFolderName", Settings.versions( s.put("sentFolderName", Settings.versions(
new V(1, new StringSetting("Sent")) 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( s.put("showPicturesEnum", Settings.versions(
new V(1, new EnumSetting(Account.ShowPictures.class, Account.ShowPictures.NEVER)) 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 = Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>(); 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( s.put("displayMode", Settings.versions(
new V(1, new EnumSetting(FolderClass.class, FolderClass.NO_CLASS)) 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 = Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>(); 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( s.put("animations", Settings.versions(
new V(1, new BooleanSetting(false)) new V(1, new BooleanSetting(false))
)); ));
@ -199,6 +204,24 @@ public class GlobalSettings {
new V(1, new BooleanSetting(false)), new V(1, new BooleanSetting(false)),
new V(4, new BooleanSetting(true)) 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); SETTINGS = Collections.unmodifiableMap(s);

View File

@ -22,6 +22,11 @@ public class IdentitySettings {
Map<String, TreeMap<Integer, SettingsDescription>> s = Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>(); 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( s.put("signature", Settings.versions(
new V(1, new SignatureSetting()) new V(1, new SignatureSetting())
)); ));

View File

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

View File

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