Merge branch 'master' of github.com:gothfox/Tiny-Tiny-RSS-for-Honeycomb

This commit is contained in:
Andrew Dolgov 2013-06-10 01:28:07 +04:00
commit 09efcf1b23
5 changed files with 223 additions and 10 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fox.ttrss" package="org.fox.ttrss"
android:versionCode="185" android:versionCode="186"
android:versionName="1.8.5" > android:versionName="1.8.6" >
<uses-sdk <uses-sdk
android:minSdkVersion="8" android:minSdkVersion="8"

View File

@ -0,0 +1,203 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="login_in_progress">Conectando…</string>
<string name="app_name">Tiny Tiny RSS</string>
<string name="login_need_configure">Por favor, configure a aplicação.</string>
<string name="login_ready">Pronto para conectar.</string>
<string name="login_login">Conectar</string>
<string name="logout">Desconectar</string>
<string name="login">Conectar</string>
<string name="debugging">Debugando</string>
<string name="password">Senha</string>
<string name="default_url">http://example.domain/tt-rss/</string>
<string name="look_and_feel">Aparência</string>
<string name="pref_theme">Tema</string>
<string name="pref_theme_long">Muda as cores da aplicação</string>
<string name="ttrss_url">URL do Tiny Tiny RSS</string>
<string name="theme_dark">Escuro</string>
<string name="preferences">Configurações</string>
<string name="theme_light">Claro</string>
<string name="connection">Conecção</string>
<string name="headline_context_multiple">Artigos selecionados</string>
<string name="http_authentication">Autenticação HTTP</string>
<string name="loading_message">Carregando, aguarde...</string>
<string name="menu_unread_feeds">Mostrar feeds não lidos</string>
<string name="menu_all_feeds">Mostrar todos os feeds</string>
<string name="update_feeds">Atualizar</string>
<string name="share_article">Compartilhar artigo</string>
<string name="catchup">Marcar como lido</string>
<string name="sort_feeds_by_unread">Ordenar por não lidos</string>
<string name="ssl_trust_any">Aceitar qualquer certificado</string>
<string name="category_browse_feeds">Navegar pelos feeds</string>
<string name="category_browse_articles">Navegar pelos artigos</string>
<string name="blank"></string>
<string name="transport_debugging">Registrar no log os dados enviados e recebidos</string>
<string name="article_toggle_marked">Colocar/Retirar estrela</string>
<string name="article_toggle_published">Publicar/Não publicar</string>
<string name="headlines_select">Selecionar artigos</string>
<string name="headlines_select_dialog">Selecionar artigos</string>
<string name="headlines_select_all">Tudo</string>
<string name="headlines_select_unread">Não lidos</string>
<string name="headlines_select_none">Deselecionar tudo</string>
<string name="selection_toggle_marked">Colocar/Retirar estrela</string>
<string name="selection_toggle_published">Publicar/Não publicar</string>
<string name="selection_toggle_unread">Lido/Não lido</string>
<string name="selection_select_none">Deselecionar tudo</string>
<string name="context_selection_toggle_marked">Colocar/Remover estrela</string>
<string name="context_selection_toggle_published">Publicar/Nâo publica</string>
<string name="context_selection_toggle_unread">Lido/Não lido</string>
<string name="article_set_unread">Artigo marcado como não lido</string>
<string name="article_mark_read_above">Marcar acima como lido</string>
<string name="http_login_summary">Opcional. Preencha este campo se sua instalação do tt-rss usa autenticação básica por http</string>
<string name="login_summary">Seu usuário tt-rss. Não é necessário no modo mono usuário</string>
<string name="ttrss_url_summary">URL da sua instalação tt-rss, por exemplo http://site.com/tt-rss/</string>
<string name="download_feed_icons">Habilitar ícones das assinaturas</string>
<string name="enable_cats">Habilitar categorias</string>
<string name="no_feeds_to_display">Nenhuma assinatura a mostrar</string>
<string name="no_headlines_to_display">Nenhum cabeçalho para mostrar</string>
<string name="no_caption_to_display">Nenhuma legenda a mostrar</string>
<string name="browse_cats_like_feeds">Navegar pelas categorias como se fossem feeds</string>
<string name="browse_cats_like_feeds_summary">Use o menu de categorias para substituir essa configuração</string>
<string name="headlines_mark_as_read">Marcar como lido</string>
<string name="error_unknown">Erro: Desconhecido (veja log)</string>
<string name="error_http_unauthorized">Erro: 401 Não autorizado</string>
<string name="error_http_forbidden">Erro: 403 Acesso negado</string>
<string name="error_http_not_found">Erro: 404 Não encontrado</string>
<string name="error_http_server_error">Erro: 500 Erro no servidor</string>
<string name="error_http_other_error">Erro: Outro erro HTTP (veja log)</string>
<string name="error_ssl_rejected">Erro: Certificado SSL foi rejeitado</string>
<string name="error_parse_error">Erro: Falha ao converter string JSON</string>
<string name="error_io_error">Erro: Falha de I/O (Servidor fora?)</string>
<string name="error_other_error">Erro: Erro desconhecido (veja log)</string>
<string name="error_api_disabled">Erro: Habilite o acesso por API externa na configuração do avançada do tt-rss</string>
<string name="error_api_unknown">Erro: Erro desconhecido na API (veja log)</string>
<string name="error_api_incorrect_usage">Erro: Uso incorreto da API</string>
<string name="error_login_failed">Erro: Usuário ou senha inválidos</string>
<string name="error_invalid_api_url">Erro: A URL da API é inválida</string>
<string name="combined_mode_summary">Mostrar todo o texto do arquivo ao invés de usar um painel separado</string>
<string name="combined_mode">Modo combinado</string>
<string name="go_offline">Modo offline</string>
<string name="go_online">Modo online</string>
<string name="offline_switch_error">Falha ao preparar o modo offline (ver log)</string>
<string name="no_feeds">Nenhuma assinatura para mostrar</string>
<string name="no_headlines">Nenhum artigo para mostrar</string>
<string name="dialog_offline_prompt">O Login falhou mas você tem dados armazenados, ir para modo offline?</string>
<string name="dialog_offline_success">Modo offline está disponível</string>
<string name="dialog_offline_go">Ir para offline</string>
<string name="dialog_cancel">Cancelar</string>
<string name="dialog_offline_switch_prompt">Baixar artigos não lidos e mudar para offline?</string>
<string name="notify_downloading_articles">Baixando artigos (%1$d)…</string>
<string name="notify_downloading_init">Iniciando download…</string>
<string name="notify_downloading_feeds">Baixando assinaturas…</string>
<string name="notify_uploading_sending_data">Enviando dados para o servidor…</string>
<string name="notify_downloading_title">Preparando modo offline</string>
<string name="notify_uploading_title">Sincronizando dados offline</string>
<string name="offline_sync_success">Sincronização de dados offline completa</string>
<string name="offline_mode">Modo offline</string>
<string name="offline_image_cache_enabled">Armazenar imagens</string>
<string name="offline_image_cache_enabled_summary">Baixar imagens para o cartão SD. Isso pode aumentar consideravelmente o tempo para o modo offline.</string>
<string name="notify_downloading_images">Baixando imagens (%1$d)…</string>
<string name="article_set_labels">Definir tags</string>
<string name="search">Pesquisar</string>
<string name="cancel">Cancelar</string>
<string name="font_size_small">Pequeno</string>
<string name="font_size_medium">Médio</string>
<string name="font_size_large">Grande</string>
<string name="pref_font_size">Tamanho do texto dos artigos</string>
<string name="donate">Doe</string>
<string name="dialog_close">Fechar</string>
<string name="donate_select">Por favor, selecione a doação</string>
<string name="donate_do">Doe!</string>
<string name="tablet_article_swipe">Swipe between articles</string>
<string name="article_link_copy">Copiar link para a área de transferência</string>
<string name="text_copied_to_clipboard">Texto copiado para a área de transferência</string>
<string name="attachments_prompt">Selecione anexo</string>
<string name="attachment_view">Exibir</string>
<string name="attachment_copy">Copiar URL</string>
<string name="justify_article_text">Justificar texto dos artigos</string>
<string name="dialog_offline_sync_in_progress">Sincronização offline em progresso</string>
<string name="dialog_offline_sync_stop">Para sincronização</string>
<string name="dialog_offline_sync_continue">Continuar</string>
<string name="article_set_note">Publicar com anotação</string>
<string name="close_feed">Fechar assinatura</string>
<string name="close_article">Fechar artigo</string>
<string name="dialog_open_preferences">Configuração</string>
<string name="dialog_need_configure_prompt">Preencha com a informação do servidor tt-rss como URL, login e senha.</string>
<string name="notify_article_marked">Artigo com estrela</string>
<string name="notify_article_unmarked">Artigo sem estrela</string>
<string name="notify_article_published">Artigo publicado</string>
<string name="notify_article_unpublished">Artigo não publicado</string>
<string name="notify_article_note_set">Nota do artigo salva</string>
<string name="update_headlines">Atualizar</string>
<string name="attachment_share">Compartilhar</string>
<string name="error_network_unavailable">Erro: Rede indisponível</string>
<string name="category_browse_headlines">Navegar pelos títulos</string>
<string name="pref_default_view_mode">Visualização padrão de assinaturas</string>
<string name="pref_default_view_mode_long">Qual assinatura abrir por padrão em smartphones</string>
<string name="donate_thanks">Doação encontrada, obrigado pelo suporte!</string>
<string name="use_volume_keys">Usar botões de volume</string>
<string name="use_volume_keys_long">Mudar entre artigos usando os botões de volume</string>
<string name="ssl_trust_any_host">Não verificar hostname</string>
<string name="error_api_unknown_method">Erro: metodo API desconhecido</string>
<string name="ssl_trust_any_long">Aceitar qualquer certificado SSL sem verificação</string>
<string name="ssl_trust_any_host_long">Não verificar o nome do servidor</string>
<string name="ssl">SSL</string>
<string name="error_ssl_hostname_rejected">Erro: Nome SSL não verificado</string>
<string name="offline_oldest_first">Mostrar artigos mais antigos primeiro</string>
<string name="prefs_dim_status_bar">Ocultar barra de status</string>
<string name="prefs_dim_status_bar_long">Ocultar barra de status durante a leitura</string>
<string name="article_comments">%1$d comentários</string>
<string name="trial_mode_prompt">Modo de teste, resta(m) %1$d dia(s).</string>
<string name="trial_purchase">Desbloquear a versão completa</string>
<string name="trial_expired">Período de teste encerrado</string>
<string name="trial_expired_message">Para continuar usando o Tiny Tiny RSS por favor desbloqueie a versão completa comprando a chave.</string>
<string name="theme_sepia">Sepia</string>
<string name="trial_thanks">Versão completa, obrigado pelo suporte!</string>
<string name="prefs_fullscreen_mode">Modo tela cheia</string>
<string name="reading">Lendo</string>
<string name="theme_dark_gray">Cinza escuro</string>
<string name="offline_articles_to_download">Número de artigos a baixar</string>
<string name="offline_articles_to_download_long">Número de artigos a baixar para o modo Offline (mais novos primeiro).</string>
<string name="pref_headlines_show_content_long">Mostrar prévia do conteúdo na lista de títulos</string>
<string name="pref_headlines_show_content">Prévia do conteúdos do artigo</string>
<string name="api_too_low">Esta ação precisa de uma nova versão do Tiny Tiny RSS</string>
<string name="share_url_prompt">URL:</string>
<string name="share_url_hint">URL do artigo</string>
<string name="share_content_hint">Conteúdo do artigo</string>
<string name="share_title_prompt">Título:</string>
<string name="share_title_hint">Título do artigo</string>
<string name="share_share_button">Compartilhar</string>
<string name="share_article_posted">Artigo postado.</string>
<string name="subscribe_name">Assinar com Tiny Tiny RSS</string>
<string name="feed_url">URL da assinatura</string>
<string name="subscribe_to_feed">Assinar feed</string>
<string name="error_while_subscribing">Erro ao assinar.</string>
<string name="category_list_updated">Lista de categorias atualizada</string>
<string name="subscribed_to_feed">Feed assinado</string>
<string name="error_feed_already_exists_">Erro: Assinatura já existe.</string>
<string name="error_invalid_url">Erro: URL inválida.</string>
<string name="error_url_is_an_html_page_no_feeds_found">Erro: URL é de uma página HTML, nenhum feed encontrado.</string>
<string name="error_url_contains_multiple_feeds">Erro: URL contém múltiplos feeds</string>
<string name="error_could_not_download_url">Erro: Não foi possível baixar a URL</string>
<string name="headlines_view_mode">Define modo de visualização</string>
<string name="headlines_set_view_mode">Define modo de visualização</string>
<string name="headlines_adaptive">Adaptativa</string>
<string name="headlines_all_articles">Todos os artigos</string>
<string name="headlines_starred">Com estrela</string>
<string name="headlines_published">Publicados</string>
<string name="headlines_unread">Não lidos</string>
<string name="article_img_open">Abrir imagem</string>
<string name="article_img_share">Compartilhar imagem</string>
<string name="requires_api5">Requer versão 1.7.6</string>
<string name="labels">Tags</string>
<string name="article_img_view_caption">Ver legenda</string>
<string name="light_theme_is_not_supported_on_honeycomb">Tema claro não é suportado no Honeycomb</string>
<string name="pref_headlines_mark_read_scroll">Marcar como lida ao visualizar</string>
<string name="pref_headlines_mark_read_scroll_long">Títulos serão marcados como lidos ao rodar depois deles</string>
<string name="mark_num_headlines_as_read">Marcar %1$d artigo(s) como lido(s)?</string>
<string name="prefs_confirm_headlines_catchup">Confirme marcação de artigos como lidos</string>
<string name="author_formatted">por %1$s</string>
<string name="n_unread_articles">%1$d artigos não lidos</string>
<string name="pref_headline_font_size">Tamanho do texto para os títulos</string>
</resources>

View File

@ -11,6 +11,7 @@ import org.fox.ttrss.types.Feed;
import org.fox.ttrss.types.FeedCategory; import org.fox.ttrss.types.FeedCategory;
import org.fox.ttrss.types.FeedCategoryList; import org.fox.ttrss.types.FeedCategoryList;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@ -48,29 +49,32 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
private FeedCategory m_selectedCat; private FeedCategory m_selectedCat;
private FeedsActivity m_activity; private FeedsActivity m_activity;
@SuppressLint("DefaultLocale")
class CatUnreadComparator implements Comparator<FeedCategory> { class CatUnreadComparator implements Comparator<FeedCategory> {
@Override @Override
public int compare(FeedCategory a, FeedCategory b) { public int compare(FeedCategory a, FeedCategory b) {
if (a.unread != b.unread) if (a.unread != b.unread)
return b.unread - a.unread; return b.unread - a.unread;
else else
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
} }
} }
@SuppressLint("DefaultLocale")
class CatTitleComparator implements Comparator<FeedCategory> { class CatTitleComparator implements Comparator<FeedCategory> {
@Override @Override
public int compare(FeedCategory a, FeedCategory b) { public int compare(FeedCategory a, FeedCategory b) {
if (a.id >= 0 && b.id >= 0) if (a.id >= 0 && b.id >= 0)
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
else else
return a.id - b.id; return a.id - b.id;
} }
} }
@SuppressLint("DefaultLocale")
class CatOrderComparator implements Comparator<FeedCategory> { class CatOrderComparator implements Comparator<FeedCategory> {
@Override @Override
@ -79,7 +83,7 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
if (a.order_id != 0 && b.order_id != 0) if (a.order_id != 0 && b.order_id != 0)
return a.order_id - b.order_id; return a.order_id - b.order_id;
else else
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
else else
return a.id - b.id; return a.id - b.id;
} }

View File

@ -17,6 +17,7 @@ import org.fox.ttrss.types.Feed;
import org.fox.ttrss.types.FeedCategory; import org.fox.ttrss.types.FeedCategory;
import org.fox.ttrss.types.FeedList; import org.fox.ttrss.types.FeedList;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@ -69,6 +70,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
m_activeCategory = cat; m_activeCategory = cat;
} }
@SuppressLint("DefaultLocale")
class FeedUnreadComparator implements Comparator<Feed> { class FeedUnreadComparator implements Comparator<Feed> {
@Override @Override
@ -76,37 +78,39 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
if (a.unread != b.unread) if (a.unread != b.unread)
return b.unread - a.unread; return b.unread - a.unread;
else else
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
} }
} }
@SuppressLint("DefaultLocale")
class FeedTitleComparator implements Comparator<Feed> { class FeedTitleComparator implements Comparator<Feed> {
@Override @Override
public int compare(Feed a, Feed b) { public int compare(Feed a, Feed b) {
if (a.is_cat && b.is_cat) if (a.is_cat && b.is_cat)
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
else if (a.is_cat && !b.is_cat) else if (a.is_cat && !b.is_cat)
return -1; return -1;
else if (!a.is_cat && b.is_cat) else if (!a.is_cat && b.is_cat)
return 1; return 1;
else if (a.id >= 0 && b.id >= 0) else if (a.id >= 0 && b.id >= 0)
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
else else
return a.id - b.id; return a.id - b.id;
} }
} }
@SuppressLint("DefaultLocale")
class FeedOrderComparator implements Comparator<Feed> { class FeedOrderComparator implements Comparator<Feed> {
@Override @Override
public int compare(Feed a, Feed b) { public int compare(Feed a, Feed b) {
if (a.id >= 0 && b.id >= 0) if (a.id >= 0 && b.id >= 0)
if (a.is_cat && b.is_cat) if (a.is_cat && b.is_cat)
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
else if (a.is_cat && !b.is_cat) else if (a.is_cat && !b.is_cat)
return -1; return -1;
else if (!a.is_cat && b.is_cat) else if (!a.is_cat && b.is_cat)
@ -114,7 +118,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
else if (a.order_id != 0 && b.order_id != 0) else if (a.order_id != 0 && b.order_id != 0)
return a.order_id - b.order_id; return a.order_id - b.order_id;
else else
return a.title.compareTo(b.title); return a.title.toUpperCase().compareTo(b.title.toUpperCase());
else else
return a.id - b.id; return a.id - b.id;
} }

View File

@ -179,6 +179,8 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL
@Override @Override
public void onArticleSelected(Article article, boolean open) { public void onArticleSelected(Article article, boolean open) {
if (article == null) return;
if (article.unread) { if (article.unread) {
article.unread = false; article.unread = false;
saveArticleUnread(article); saveArticleUnread(article);