diff --git a/ActionBarSherlock.iml b/ActionBarSherlock.iml index ba5bef1f1..5d961d3f1 100644 --- a/ActionBarSherlock.iml +++ b/ActionBarSherlock.iml @@ -27,6 +27,7 @@ /plugins/ActionBarSherlock/library/res-overlay true + true diff --git a/Android-PullToRefresh.iml b/Android-PullToRefresh.iml index 100d12c41..864d66f18 100644 --- a/Android-PullToRefresh.iml +++ b/Android-PullToRefresh.iml @@ -27,6 +27,7 @@ /plugins/Android-PullToRefresh/library/res-overlay true + true diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 2a951fb0e..65dfac0cb 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ false + true diff --git a/k9mail.ipr b/k9mail.ipr index 4355fc00f..d6082dbca 100644 --- a/k9mail.ipr +++ b/k9mail.ipr @@ -405,7 +405,7 @@ http://www.w3.org/1999/xhtml - + diff --git a/res/layout/message_list_item.xml b/res/layout/message_list_item.xml index 14ce2996e..e7e028551 100644 --- a/res/layout/message_list_item.xml +++ b/res/layout/message_list_item.xml @@ -23,6 +23,16 @@ android:layout_marginLeft="8dip" android:layout_marginRight="8dip" android:background="@android:color/transparent" /> + + - + When replying to messages, the original message is in your reply.--> Odpovědět za citovaným textem - Při odpovídání na zprávu se původní zpráva objeví ned vaší odpovědí. + Při odpovídání na zprávu se původní zpráva objeví nad vaší odpovědí. diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 8691b45be..3a77c96aa 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1131,4 +1131,32 @@ de plus Sauvegarder l\'image en tant que \"%s\" Echec de la sauvegarde de l\'image. + + Tous + 10 + 25 + 50 + 100 + 250 + 500 + 1000 + Limite les résultats de la recherche distante + La recherche s\'arrêtera après que %s résultats ont été trouvés. + Recherche dossier distant + Inclure le corps du texte dans la recherche distante + La recherche dans le corps du texte peut être lente. + Envoi de la requête au serveur + Récupération de %d résultats + Récupération %1$d sur %2$d résultats + + Rechercher + Activer la recherche distante + Rechercher des messages sur le serveur en plus de ceux de votre appareil + Rechercher des messages distant + Tirez pour la recherche distante… + Relâchez pour la recherche distante… + La recherche à distance n\'est pas disponible sans connexion au réseau. + + Utiliser le fond comme indicateur de lecture + Montrer les messages lus et non lus avec différentes couleurs de fond diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 5eee9b9dd..010e6c3fc 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -10,7 +10,7 @@ K-9 Mail BETA K-9 fiókok - + K-9 olvasatlan K-9 Mail távoli vezérlés Lehetővé teszi, hogy az alkalmazás módosítsa a K9 mail beállításait. @@ -56,16 +56,16 @@ - + Play áruház megnyitása - - - - + Készítők: %s + Verzió információk: %s + A következő könyvtárakat használjuk: %s + Emoji ikonok: %s Levélmellékletek megnyitása Az alkalmazás engedélyezi a levélmellékletek megnyitását. @@ -74,7 +74,7 @@ Levelek törlése Az alkalmazás engedélyezi az emailek törlését. - About %s + A %s névjegye Fióklista Haladó beállítások %s @@ -114,7 +114,7 @@ Továbbítás Áthelyez Folytatás - + Vissza Rendben Mégsem Piszkozat @@ -124,7 +124,7 @@ Üzenet küldése Mappa lista Mappák frissítése - + Mappa keresése Mindent olvasottnak jelöl Új fiók Levélírás @@ -155,9 +155,9 @@ Olvasatlannak jelöl Másolatot kap - - - + Olvasási jelentés + Olvasási jelentés lesz kérve + Nem lesz Olvasási jelentés lesz kérve Melléklet Kép-melléklet csatolása Videó-melléklet csatolása @@ -240,7 +240,7 @@ Titkos másolat Tárgy Levél szövege - + Aláírás -------- Eredeti levél -------- Tárgy: Küldve: @@ -251,12 +251,12 @@ Legalább egy címzetted adjon meg. E-mail cím nem található. Néhány mellékletet nem lehet továbbítani, mert nem lettek letöltve. - - - - - - + Idézet + Címzett hozzáadása (To) + Címzett hozzáadása (CC) + Címzett hozzáadása (BCC) + Idézett szöveg törlése + Idézett szöveg szerkesztése Feladó: %s <%s> Címzett: @@ -271,13 +271,13 @@ %s mellékletei a SD kártyára mentve. Nem lehet a mellékletet az SD kártyára menteni. Képek mutatása - - - + Üzenet megjelenítése + Csatolmányok megjelenítése + Egyéb… Melléklet letöltése. %s nincs társítva semmihez. Teljes üzenet letöltése - + Letöltés… Nincs minden fejléc letöltve. Válassza a \"Minden levélfejléc letöltése\" opciót a bejövő szerverbeállításoknál. @@ -310,32 +310,32 @@ Fix szélességű betűtípus használata a sima szöveges üzeneteknél Visszalépés törlés után Törlés után visszalép a levelek listájára - - + Mutassa a következő üzenetet törlés után + A törlés után alapértelmezetten a következő üzenetet mutatja Parancsok megerősítése Üzenet megjelenítése a parancs végrehatása előtt Archivál Törlés (csak üzenetek nézet) - + Csillagozott törlése (csak olvasható üzenet) Levélszemét Összes megjelölése olvasottként Küldés - - - - + Tárgy elrejtése az értesítésekben + Soha + Ha a készülék le van zárva + Mindig - - - - - + Olvasottnak/olvasatlannak jelöl + Törlés + Áthelyezés az archívumba + Nincs archívum mappa. + Áthelyezés - + Kijelölés megszüntetése Csendes mód Éjszakára kikapcsolja a jelzőhangokat, rezgést, villogást @@ -406,7 +406,7 @@ Frissítés után Kézileg - + IMAP névtér automatikus felismerése IMAP útvonal prefix Piszkozatok mappája @@ -520,8 +520,8 @@ Értesítésre kattintva megnyitja az olvasatlan üzeneteket Olvasatlanok kijelzése Olvasatlan levelek száma az állapotsoron. - - + Üzenet megjelölése olvasottnak megnyitáskor + Olvasottnak jelöli az üzenetet, ha megnézik Művelet gombok megjelenítése Mutassa a Mozgatás, Archív és Levélszemét gombokat @@ -533,8 +533,8 @@ Levelek küldése - - + Válasznál eredeti levél megjelenítése + Amikor választ ír, az eredeti üzenet is látható lesz a válszban. Válasz az idézet után Válaszlevélnél az eredeti üzenet fent jelenik meg @@ -747,7 +747,7 @@ Rendezés… Dátum - + Érkezés Feladó Tárgy Csillag @@ -775,14 +775,14 @@ Kulcs elfogadva Kulcs elutasítva - + Del (or D) - Törlés\u000AR - + Válasz\u000AA - Válasz mindenkinek\u000AF - Továbbít\u000AJ or P - Előző + üzenet\u000AK, N - Kövtkető üzenet\u000AM - Move\u000AY - Másolás\u000AZ - Kicsinyít\u000AShift-Z - + Nagyít\u000aG - Csillagoz + Del (or D) - Törlés\u000AR - + Válasz\u000AA - Válasz mindenkinek\u000AC - Írás\u000AF - Továbbít\u000aM - + Áthelyezés\u000AY - Násolás\u000AG - Csillagoz\u000AO - Rendezési típus\u000AI - Rendezési sorrend\u000AQ + - Vissza a mappákba\u000AS - Select/deselect - + mappa neve Mappák megjelenítése Minen mappa @@ -827,7 +827,7 @@ Mindig "Ha a 'Háttéradatok' bekapcsolva" "Ha a 'Háttéradatok' és 'Auto-szink' bekapcsolva" - + AMikor az \'Automatikus szinkronizáció\' be van kapcsolva Nincs levél kiválasztva @@ -931,8 +931,8 @@ Dátum Üzenet szövege - - + Üzenet írása + Szöveg beviteli mezők Mini Pici @@ -975,8 +975,8 @@ Menti piszkozatként? Menti vagy mégsem az üzenetet? - - + Üzenet elvetése? + Valóban elveti az üzenetet? @@ -1018,38 +1018,38 @@ Nem lehet kapcsolódni. - - - - - - + Beállítások importálása és exportálása + Fiókbeállítások exportálása + Fiókok és beállítások exportálása + Importálás + Exportálás + Beállítások importálása - - - - - - - - - - - - - - - + Általános beállítások + Beállítások exportálása… + Beállítások importálása… + Fájl beolvasása… + Exportált beállítások mentve ide: %s + Az általános beállítások importálva innen: %s + A(z) %s importálva innen: %s + + 1 fiók + %s fiók + + Beállítások exportálása sikertelen + Beállítások importálása sikertelen innen: %s + Exportálás sikeresen befejezve + Exportálás sikertelen + Importálás sikeresen befejezve + Importálás sikertelen + Fiók aktiválása - - - + + szerver jelszava + szerver jelszavai + + Bwjövő szerver (%s): + Kimenü szerver (%s): - - + Mozgatás fel + Mozgatás le + Fiók mozgatása… - - + Nincs fájlkezleő alkalmazás + Bezárás - + Nincs szöveg - - - - + Megnyit és megtekint + Link megosztása + Link másolása a vágólapra + Link - - - - - - + Kép + Kép megtekintése + Kép mentése + Kép letöltése + Kép URL-jének másolás a vágólapra + Kép URL - - - - + Szám hívása + Menés a névjegyekhez + Szám másolása a vágólapra + Telefonszám - - - - + Levél küldése + Mentés a névjegyekzeh + E-mail cím másolása a vágólapra + E-mail cím - - + Kép mentése: \"%s\" + A kép mentése sikertelen. diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index e3e46d612..221e97906 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -274,7 +274,7 @@ http://k9mail.googlecode.com/ Impossibile salvare l\'allegato sulla scheda SD. Mostra immagini Mostra messaggio - Mostra allegato + Mostra allegati Altro… Recupero allegato in corso. Impossibile trovare un visualizzatore per %s. diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 559c6ffb1..e2dba892e 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -9,7 +9,7 @@ K-9 Mail BETA Contas K-9 - + K-9 Não lidos Controle remoto para K-9 Mail Permitir esta aplicação controlar atividades e configurações do K-9 Mail. @@ -18,7 +18,7 @@ Google, The K-9 Dog Walkers. - + Licenciado sob a Apache License, Versão 2.0. @@ -55,8 +55,8 @@ http://k9mail.googlecode.com/ - - + Não existe um aplicativo adequado para a operação de importação. Instale um gerenciador de arquivos pela Google Play Store. + Abrir a Play Store @@ -65,7 +65,7 @@ http://k9mail.googlecode.com/ Autores: %s Revisões e informações: %s - + Ler anexos do E-mail Permitir que o K-9 leia os anexos de seus e-mails. @@ -114,7 +114,7 @@ http://k9mail.googlecode.com/ Encaminhar Mover Continuar - + Voltar Pronto Descartar Salvar como rascunho @@ -124,7 +124,7 @@ http://k9mail.googlecode.com/ Enviar mensagens Lista de pastas Atualizar pastas - + Encontrar pasta Marcar todas as como lidas Incluir conta Escrever @@ -155,7 +155,7 @@ http://k9mail.googlecode.com/ Selecionar texto Marcar como não lida - Incluir Cc/Bcc + Incluir CC/BCC Confirmação de leitura Confirmação de leitura será requisitada Confirmação de leitura não será requisitada @@ -216,7 +216,7 @@ http://k9mail.googlecode.com/ %s (Rascunhos) %s (Lixo) - %s (Enviado) + %s (Enviados) %s (Arquivo) %s (Spam) @@ -238,7 +238,7 @@ http://k9mail.googlecode.com/ Bcc Assunto Texto da mensagem - + Assinatura ........ Mensagem Original ........ Assunto: Enviado: @@ -250,11 +250,11 @@ http://k9mail.googlecode.com/ Não foi possível encontrar o endereço de e-mail. Alguns anexos não podem ser encaminhados porque não foram inclusos na mensagem. Mensagem citada - - - - - + Adicionar destinatário (Para) + Adicionar destinatário (CC) + Adicionar destinatário (BCC) + Remover texto citado + Editar texto citado De: %s <%s> Para: @@ -269,10 +269,10 @@ http://k9mail.googlecode.com/ Anexo salvo no cartão de memória como %s. Impossível salvar anexo no cartão de memória. Mostrar imagens - - - - Buscando anexo. + Exibir mensagem + Exibir anexos + Mais… + Buscando anexo Não foi possível encontrar um visualizador para %s. Transferir mensagem completa @@ -315,25 +315,25 @@ http://k9mail.googlecode.com/ Mostrar diálogo sempre quando for disparada uma ação Arquivo Excluir (apenas visualização) - + Excluir marcados com estrela (visualização apenas) Spam Marcar todas como lidas Enviar - - - - + Ocultar assunto nas notificações + Nunca + Com o telefone bloqueado + Sempre - - - - - - - - - + Botões de lote + Configurar botões de lote na tela de mensagens + Marcar como lida/não lida + Excluir + Arquivar + Nenhuma pasta de arquivo. + Mover + Bandeira + Deselecionar Período de silêncio Desabilitar sons, vibração e luz indicadora à noite @@ -519,8 +519,8 @@ http://k9mail.googlecode.com/ Procurar por mensagens não lidas quando o aviso for aberto Mostrar contagem de não lidas Mostrar o número de mensagens não lidas na barra de notificação. - - + Marcar mensagem como lida ao abrir + Marcar a mensagem como lida ao abrir e visualizar Habilitar botão de ações Mostrar botões de Arquivar, Mover e Span. @@ -546,8 +546,8 @@ http://k9mail.googlecode.com/ HTML (imagens e formatação serão preservadas) - - + Sempre exibir CC/BCC + Sempre exibir os campos CC/BCC Confirmação de leitura Sempre solicitar confirmação de leitura @@ -569,7 +569,7 @@ http://k9mail.googlecode.com/ não disponível Auto-login Use o endereço de e-mail da conta para escolher assinatura. - + Auto-encriptar Frequência de verificação de e-mail @@ -746,7 +746,7 @@ http://k9mail.googlecode.com/ Ordenar por… Data - + Recebimento Remetente Assunto Favorito @@ -787,7 +787,7 @@ http://k9mail.googlecode.com/ - Retornar à pastas\u000AS - Selecionar/desselecionar - 1 - Mostrar apenas pastar de Primeira Classe\u000A + 1 - Mostrar apenas pastas de Primeira Classe\u000A 2 - Mostrar pastas de Primeira e Segunda Classe\u000A 3 - Mostar todas exceto as de Segunda Classe\u000A 4 - Mostar todas as pastas\u000A @@ -827,9 +827,9 @@ http://k9mail.googlecode.com/ Sincronização em segundo plano Nunca Sempre - Quando \'Dados de segundo plado\' estiver checado - Quando \'Dados de segundo plano\' & \'Auto-sinc\' estiverem checados - + Quando \'Dados de segundo plano\' estiver checado + Quando \'Dados de segundo plano\' e \'Auto-sinc\' estiverem checados + Quando a \'Auto-sinc\' estiver ligada Nenhuma mensagem selecionada @@ -921,7 +921,7 @@ http://k9mail.googlecode.com/ Assunto Remetente Data - + Previsualizar Mensagens Remetente @@ -933,8 +933,8 @@ http://k9mail.googlecode.com/ Data Corpo da mensagem - - + Composição de mensagem + Campos de entrada de texto Minúsculo Pequenino @@ -951,13 +951,13 @@ http://k9mail.googlecode.com/ Grande - Checar \"Configurações\" -> \"Utilize Gallery bug \" para tornar poder anexar imagens ou vídes utilizando Galeria 3D. + Checar \"Configurações\" -> \"Utilize o Gallery bug \" para poder anexar imagens ou vídeos utilizando a Galeria 3D. - Usar \"Incluir anexo (Imagem)\" ou \"Incluir anexo (Video)\" para anexar images ou videos da Galeria 3D. + Usar \"Incluir anexo (Imagem)\" ou \"Incluir anexo (Video)\" para anexar imagens ou videos da Galeria 3D. Diversos - Utilizar Gallery bug + Solução do bug da Galeria Mostrar botões para incluir anexos de imagem/video (para contornar problemas utilizando Gallery 3D) @@ -977,27 +977,27 @@ http://k9mail.googlecode.com/ Salvar mensagem de rascunho? Salvar ou descartar esta mensagem? - - + Descartar mensagens? + Tem certeza que deseja descartar esta mensagem? - - + Recusar salvamento de rascunho. + Recusar salvamento de rascunho de mensagem encriptada. - - + Continuar sem chave pública? + Um ou mais destinatários não tem chave pública. Continuar? - Selecione o testo para copiar. + Selecione o texto para copiar. Confirmar exclusão Deseja mesmo excluir esta mensagem? Excluir Não excluir - - + + Sim + Não - --> - - - - + Baixando anexo O log de depuração para o sistema Android foi habilitado - - + » + Não é possível conectar. - - - - - - - - - - - - - - - - - - - - - - - - + Importar ou exportar configurações + Exportar configurações de conta + Exportar configurações e contas + Importar + Exportar + Importar configurações + Importar seleção + Configurações globais + Exportando… + Importando… + Buscando arquivo… + Configurações salvas para %s + Configurações importadas de %s + Importada %s de %s + + 1 conta + %s contas + + Falha na exportação + Falha na importação via %s + Exportação concluída + Falha na exportação + Importação realizada + Falha na importação + Ativar conta + Para poder usar a conta \"%s\" você deve fornecer %s. + + senha do servidor + senhas do servidor + - - - + Salvar anexos para… + Salvar anexo + Nenhum explorador de arquivos encontrado. Deseja salvar este anexo? - - - + Mover para cima + Mover para baixo + Movendo conta… - + Exibir contagem de não lidos para… - - + Explorador de Arquivos Ausente + Fechar - + Nenhum texto - - - - + Abrir para visualizar + Compartilhar link + Copiar link + Link - - - - - - + Imagem + Ver imagem + Salvar imagem + Baixar imagem + Copiar URL da imagem + URL da imagem - - - - + Chamar número + Salvar como contato + Copiar número telefônico + Número - - - - + Enviar email + Salvar nos contatos + Copiar endereço de email + Endereço email - - + Imagem salva como \"%s\" + Falha ao salvar imagem. diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index a777a08bc..cb6dd12aa 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -31,7 +31,7 @@ \n * систематизация сообщений; \n * электронные подписи в почте; \n * СК Себе; -\n * подписки к папкам +\n * подписки к папкам; \n * синхронизация всех папок; \n * конфигурация возвратного адреса; \n * сочетания клавиш на аппаратной клавиатуре; @@ -324,7 +324,7 @@ http://k9mail.googlecode.com/ Всегда Кнопки групповой обработки - + Настройка списка кнопок групповой обработки Пометить как прочитанное/непрочитанное Удалить Переместить в архив @@ -463,18 +463,18 @@ http://k9mail.googlecode.com/ Раз в 3 часа Раз в 6 часов Раз в 12 часов - Раз в 24 часа + Раз в сутки Запрашивать при соединении с Push Mail Использовать Push Mail Если ваш сервер поддерживает такую возможность, новые сообщения появляются мгновенно. Эта опция может существенно улучшить или ухудшить скорость и эффективность всей системы. Обновлять неактивное соединение Раз в минуту - Раз в 2 минут - Раз в 3 минут + Раз в 2 минуты + Раз в 3 минуты Раз в 6 минут Раз в 12 минут - Раз в 24 минут + Раз в 24 минуты Раз в 36 минут Раз в 48 минут Раз в час @@ -605,8 +605,8 @@ http://k9mail.googlecode.com/ за 2 последних дня за 3 последних дня за последнюю неделю - за 2 последних недели - за 3 последних недели + за 2 последние недели + за 3 последние недели за последний месяц за 2 последних месяца за 3 последних месяца diff --git a/res/xml/account_settings_preferences.xml b/res/xml/account_settings_preferences.xml index 8c76d5910..0328cc95e 100644 --- a/res/xml/account_settings_preferences.xml +++ b/res/xml/account_settings_preferences.xml @@ -174,12 +174,6 @@ android:entryValues="@array/account_setup_expunge_policy_values" android:dialogTitle="@string/account_setup_expunge_policy_label" /> - - + + parent, View view, int position, long id) { - updatePortFromSecurityType(); - } - - public void onNothingSelected(AdapterView parent) { /* unused */ } - }); - /* * Calls validateFields() which enables or disables the Next button * based on the fields' validity. @@ -294,12 +282,33 @@ public class AccountSetupIncoming extends K9Activity implements OnClickListener throw new Exception("Unknown account type: " + mAccount.getStoreUri()); } + // Select currently configured security type for (int i = 0; i < CONNECTION_SECURITY_TYPES.length; i++) { if (CONNECTION_SECURITY_TYPES[i] == settings.connectionSecurity) { SpinnerOption.setSpinnerOptionValue(mSecurityTypeView, i); } } + /* + * Updates the port when the user changes the security type. This allows + * us to show a reasonable default which the user can change. + * + * Note: It's important that we set the listener *after* an initial option has been + * selected by the code above. Otherwise the listener might be called after + * onCreate() has been processed and the current port value set later in this + * method is overridden with the default port for the selected security type. + */ + mSecurityTypeView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, + long id) { + updatePortFromSecurityType(); + } + + @Override + public void onNothingSelected(AdapterView parent) { /* unused */ } + }); + mCompressionMobile.setChecked(mAccount.useCompression(Account.TYPE_MOBILE)); mCompressionWifi.setChecked(mAccount.useCompression(Account.TYPE_WIFI)); mCompressionOther.setChecked(mAccount.useCompression(Account.TYPE_OTHER)); diff --git a/src/com/fsck/k9/activity/setup/AccountSetupOutgoing.java b/src/com/fsck/k9/activity/setup/AccountSetupOutgoing.java index 5ae1f823b..15f1c9bb4 100644 --- a/src/com/fsck/k9/activity/setup/AccountSetupOutgoing.java +++ b/src/com/fsck/k9/activity/setup/AccountSetupOutgoing.java @@ -137,19 +137,6 @@ public class AccountSetupOutgoing extends K9Activity implements OnClickListener, authTypesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mAuthTypeView.setAdapter(authTypesAdapter); - /* - * Updates the port when the user changes the security type. This allows - * us to show a reasonable default which the user can change. - */ - mSecurityTypeView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - public void onItemSelected(AdapterView parent, View view, int position, long id) { - updatePortFromSecurityType(); - } - - public void onNothingSelected(AdapterView parent) { - } - }); - /* * Calls validateFields() which enables or disables the Next button * based on the fields' validity. @@ -223,13 +210,33 @@ public class AccountSetupOutgoing extends K9Activity implements OnClickListener, } } - + // Select currently configured security type for (int i = 0; i < smtpSchemes.length; i++) { if (smtpSchemes[i].equals(uri.getScheme())) { SpinnerOption.setSpinnerOptionValue(mSecurityTypeView, i); } } + /* + * Updates the port when the user changes the security type. This allows + * us to show a reasonable default which the user can change. + * + * Note: It's important that we set the listener *after* an initial option has been + * selected by the code above. Otherwise the listener might be called after + * onCreate() has been processed and the current port value set later in this + * method is overridden with the default port for the selected security type. + */ + mSecurityTypeView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, + long id) { + updatePortFromSecurityType(); + } + + @Override + public void onNothingSelected(AdapterView parent) { /* unused */ } + }); + if (uri.getHost() != null) { mServerView.setText(uri.getHost()); } diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index 1fa7f939f..0175765e1 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -59,6 +59,7 @@ public class Prefs extends K9PreferenceActivity { private static final String PREFERENCE_MEASURE_ACCOUNTS = "measure_accounts"; private static final String PREFERENCE_COUNT_SEARCH = "count_search"; private static final String PREFERENCE_HIDE_SPECIAL_ACCOUNTS = "hide_special_accounts"; + private static final String PREFERENCE_MESSAGELIST_CHECKBOXES = "messagelist_checkboxes"; private static final String PREFERENCE_MESSAGELIST_PREVIEW_LINES = "messagelist_preview_lines"; private static final String PREFERENCE_MESSAGELIST_SENDER_ABOVE_SUBJECT = "messagelist_sender_above_subject"; private static final String PREFERENCE_MESSAGELIST_SHOW_CORRESPONDENT_NAMES = "messagelist_show_correspondent_names"; @@ -105,6 +106,7 @@ public class Prefs extends K9PreferenceActivity { private CheckBoxPreference mHideSpecialAccounts; private ListPreference mPreviewLines; private CheckBoxPreference mSenderAboveSubject; + private CheckBoxPreference mCheckboxes; private CheckBoxPreference mShowCorrespondentNames; private CheckBoxPreference mShowContactName; private CheckBoxPreference mChangeContactNameColor; @@ -223,6 +225,9 @@ public class Prefs extends K9PreferenceActivity { mSenderAboveSubject = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_SENDER_ABOVE_SUBJECT); mSenderAboveSubject.setChecked(K9.messageListSenderAboveSubject()); + mCheckboxes = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_CHECKBOXES); + mCheckboxes.setChecked(K9.messageListCheckboxes()); + mShowCorrespondentNames = (CheckBoxPreference)findPreference(PREFERENCE_MESSAGELIST_SHOW_CORRESPONDENT_NAMES); mShowCorrespondentNames.setChecked(K9.showCorrespondentNames()); @@ -417,6 +422,7 @@ public class Prefs extends K9PreferenceActivity { K9.setCountSearchMessages(mCountSearch.isChecked()); K9.setHideSpecialAccounts(mHideSpecialAccounts.isChecked()); K9.setMessageListPreviewLines(Integer.parseInt(mPreviewLines.getValue())); + K9.setMessageListCheckboxes(mCheckboxes.isChecked()); K9.setShowCorrespondentNames(mShowCorrespondentNames.isChecked()); K9.setMessageListSenderAboveSubject(mSenderAboveSubject.isChecked()); K9.setShowContactName(mShowContactName.isChecked()); diff --git a/src/com/fsck/k9/fragment/MessageListFragment.java b/src/com/fsck/k9/fragment/MessageListFragment.java index 9cf2d7e62..5797f8209 100644 --- a/src/com/fsck/k9/fragment/MessageListFragment.java +++ b/src/com/fsck/k9/fragment/MessageListFragment.java @@ -48,6 +48,9 @@ import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; @@ -364,6 +367,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick private boolean mSortAscending = true; private boolean mSortDateAscending = false; private boolean mSenderAboveSubject = false; + private boolean mCheckboxes = true; private int mSelectedCount = 0; private Set mSelected = new HashSet(); @@ -667,6 +671,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick mController = MessagingController.getInstance(getActivity().getApplication()); mPreviewLines = K9.messageListPreviewLines(); + mCheckboxes = K9.messageListCheckboxes(); decodeArguments(); } @@ -1556,6 +1561,14 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick holder.preview.setTextSize(TypedValue.COMPLEX_UNIT_SP, mFontSizes.getMessageListPreview()); holder.threadCount = (TextView) view.findViewById(R.id.thread_count); + holder.selected = (CheckBox) view.findViewById(R.id.selected_checkbox); + if (mCheckboxes) { + holder.selected.setOnCheckedChangeListener(holder); + holder.selected.setVisibility(View.VISIBLE); + } else { + holder.selected.setVisibility(View.GONE); + } + view.setTag(holder); return view; @@ -1634,13 +1647,26 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick long uniqueId = cursor.getLong(mUniqueIdColumn); boolean selected = mSelected.contains(uniqueId); - if (selected) { + if (!mCheckboxes && selected) { holder.chip.setBackgroundDrawable(account.getCheckmarkChip().drawable()); } else { holder.chip.setBackgroundDrawable(account.generateColorChip(read, toMe, ccMe, fromMe, flagged).drawable()); } + if (mCheckboxes) { + // Set holder.position to -1 to avoid MessageViewHolder.onCheckedChanged() toggling + // the selection state when setChecked() is called below. + holder.position = -1; + + // Only set the UI state, don't actually toggle the message selection. + holder.selected.setChecked(selected); + + // Now save the position so MessageViewHolder.onCheckedChanged() will know what + // message to (de)select. + holder.position = cursor.getPosition(); + } + // Background indicator if (K9.useBackgroundAsUnreadIndicator()) { int res = (read) ? R.attr.messageListReadItemBackgroundColor : @@ -1730,7 +1756,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick } } - class MessageViewHolder { + class MessageViewHolder implements OnCheckedChangeListener { public TextView subject; public TextView preview; public TextView from; @@ -1738,6 +1764,15 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick public TextView date; public View chip; public TextView threadCount; + public CheckBox selected; + public int position = -1; + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (position != -1) { + toggleMessageSelectWithAdapterPosition(position); + } + } } @@ -1855,6 +1890,10 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick return; } + toggleMessageSelectWithAdapterPosition(adapterPosition); + } + + private void toggleMessageSelectWithAdapterPosition(int adapterPosition) { Cursor cursor = (Cursor) mAdapter.getItem(adapterPosition); long uniqueId = cursor.getLong(mUniqueIdColumn); diff --git a/src/com/fsck/k9/preferences/GlobalSettings.java b/src/com/fsck/k9/preferences/GlobalSettings.java index 4b2cd52c7..190b46765 100644 --- a/src/com/fsck/k9/preferences/GlobalSettings.java +++ b/src/com/fsck/k9/preferences/GlobalSettings.java @@ -137,6 +137,9 @@ public class GlobalSettings { s.put("measureAccounts", Settings.versions( new V(1, new BooleanSetting(true)) )); + s.put("messageListCheckboxes", Settings.versions( + new V(1, new BooleanSetting(false)) + )); s.put("messageListPreviewLines", Settings.versions( new V(1, new IntegerRangeSetting(1, 100, 2)) ));