diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 349170577..fb31d8958 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -52,6 +52,7 @@ dependencies { compile('com.mikepenz:materialdrawer:5.0.9@aar') { transitive = true } + compile 'com.mikepenz:google-material-typeface:2.2.0.1.original@aar' compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:design:23.2.1' diff --git a/Habitica/res/layout/material_drawer_item_section_icon.xml b/Habitica/res/layout/material_drawer_item_section_icon.xml new file mode 100644 index 000000000..f8dc3986b --- /dev/null +++ b/Habitica/res/layout/material_drawer_item_section_icon.xml @@ -0,0 +1,39 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/values-de/strings.xml b/Habitica/res/values-de/strings.xml index 7bc3cd1c4..f817ccd02 100644 --- a/Habitica/res/values-de/strings.xml +++ b/Habitica/res/values-de/strings.xml @@ -231,4 +231,8 @@ Für den Anfang, welche Bereiche deines Lebens möchtest du verbessern? Waffe Kostüm tragen Ausgerüstet + Ausstehend + Angenommen + Abgelehnt + Teilnehmer diff --git a/Habitica/res/values-es/strings.xml b/Habitica/res/values-es/strings.xml index ce93bd127..0fe94dd07 100644 --- a/Habitica/res/values-es/strings.xml +++ b/Habitica/res/values-es/strings.xml @@ -147,9 +147,6 @@ Fecha límite Aceptar Rechazar - Empezar - Cancelar - Abortar Abandonar Desafío Versión %s (%d) Ayuda & FAQ diff --git a/Habitica/res/values-fr/strings.xml b/Habitica/res/values-fr/strings.xml index f776ec911..aff0c46ba 100644 --- a/Habitica/res/values-fr/strings.xml +++ b/Habitica/res/values-fr/strings.xml @@ -85,7 +85,7 @@ Vendredi Samedi Dimanche - Vous avez passé un niveau ! + Vous avez gagné un niveau ! En atteignant vos buts dans la vie réelle, vous avez atteint le Niveau %1$d ! Vous avez été guéri·e complètement ! Bravo ! @@ -99,15 +99,15 @@ Vous avez utilisé %1$s pour %2$d points de mana. Nouvelle vérification Ajouter - N\'oubliez pas de cocher vos tâches quotidiennes accomplies ! + N\'oubliez pas de cocher vos tâches Quotidiennes ! Utiliser une compétence Bientôt disponible - Êtes-vous sûr·e de vouloir signaler ce message pour violation ? + Êtes-vous sûr·e de vouloir signaler ce message pour infraction ? Signaler Disponible au niveau 11 - Vous ne faites pas partie d\'une équipe. Pour rejoindre une équipe, veuillez visiter le site Internet. + Vous ne faites pas partie d\'une équipe. Pour rejoindre une équipe, veuillez visiter le site. Mot de passe oublié - Mot de passe oublié ? Veuillez vous rendre sur la version mobile de notre site. + Mot de passe oublié ? Veuillez vous rendre sur la version mobile du site. Quitter l\'Auberge Se reposer à l\'Auberge Acheter @@ -232,4 +232,8 @@ Pour commencer, quels aspects de votre vie souhaitez-vous améliorer ? Arme Porter un costume Équipé + En attente + Acceptée + Rejeté + Participants diff --git a/Habitica/res/values-it/strings.xml b/Habitica/res/values-it/strings.xml index 340d5e810..0a01b190f 100644 --- a/Habitica/res/values-it/strings.xml +++ b/Habitica/res/values-it/strings.xml @@ -147,9 +147,6 @@ Data di scadenza Accetta Rifiuta - Inizia - Annulla - Annulla Abbandona Missione Versione %s (%d) Capito! diff --git a/Habitica/res/values-lt/strings.xml b/Habitica/res/values-lt/strings.xml index d462ce1bf..2e3eb002c 100644 --- a/Habitica/res/values-lt/strings.xml +++ b/Habitica/res/values-lt/strings.xml @@ -147,10 +147,14 @@ Baigimo Terminas Sutikti Atmesti - Pradėti - Atšaukti - Nutraukti + Pradėti Misiją + Atšaukti Pakvietimą + Atšaukti Misiją Palikti Misiją + Laukiama + Sutiko + Atsisakė + Dalyviai Versija: %s (%d) Pagalba & DUK Supratau! @@ -232,4 +236,14 @@ Pradžiai, kurias savo gyvenimo dalis norėtum tobulint? Ginklas Užsidėti Kostiumą Užsidėta + Ar tikrai nori atšaukti misiją? Visi pakvietimai bus nutraukti. Misijos savininkas atgaus misijos rankraštį. + Misijos Pakvietimas + Ar tikrai nori pradėti misiją? Kai ji prasidės, kiti grupės nariai nebegalės prisijungti. + Tave pakvietė dalyvauti misijoje! + Liko 1 diena + prieš %d dieną(as) + prieš 1 minutę + prieš %d minutę(es) + prieš %d valandą(as) + prieš 1 valandą diff --git a/Habitica/res/values-pl/strings.xml b/Habitica/res/values-pl/strings.xml index da0df7a36..d989af677 100644 --- a/Habitica/res/values-pl/strings.xml +++ b/Habitica/res/values-pl/strings.xml @@ -147,9 +147,6 @@ Termin Akceptuj Odrzuć - Rozpocznij - Anuluj - Porzuć Opuść Misję Wersja %s (%d) Jasne! diff --git a/Habitica/res/values-pt-rBR/strings.xml b/Habitica/res/values-pt-rBR/strings.xml index 73e456f58..d974f0335 100644 --- a/Habitica/res/values-pt-rBR/strings.xml +++ b/Habitica/res/values-pt-rBR/strings.xml @@ -65,6 +65,7 @@ Notas Texto Dificuldade + Rótulo Trivial Fácil Médio @@ -103,7 +104,7 @@ Em Breve Você tem certeza que quer reportar esta mensagem por violação? Reportar Mensagem - Desbloqueie no nv 10 + Desbloqueie no nível 11 Você não está em um grupo. Para entrar em um grupo, por favor visite o site. Esqueci a senha Esqueceu a senha? Por favor use o Site móvel. @@ -144,47 +145,53 @@ Comprar Comprar conjunto %s Data limite + Aceitar + Rejeitar + Iniciar + Cancelar + Abortar + Abandonar missão Versão %s (%d) - + Ajuda &amp: Perguntas Frequentes Entendi! Lembre-me novamente Bem vindo(a) ao Habitica - Junte-se a mais de 1,100,000 pessoas que se divertem enquanto fazem as coisas acontecerem. Crie um avatar e acompanhe suas tarefas da vida real. + Junte-se à mais de 1.100.000 pessoas se divertindo enquanto fazem o que precisam. Crie um avatar e acompanhe suas atividades na vida real. Progresso no jogo = Progresso na vida Desbloqueie recursos no jogo ao completar suas tarefas da vida real. Ganhe armaduras, animais de estimação, montarias e mais para recompensá-lo por atingir suas metas! Socialize e lute contra monstros Mantenha suas metas sob controle com a ajuda de seus amigos. Ajudem-se na vida e na batalha enquanto melhoram juntos! - Entrar + Iniciar Anterior Próximo Pular - Bem vindo ao Habitica, onde avançar no jogo vai melhorar sua vida real! Completando metas do mundo real, você vai desbloquear equipamentos, animais de estimação, missões, e mais. - Bem vindo - Primeiramente, você precisa de um avatar no jogo para te representar! As coisas que você faz na vida real, vão afetar a saúde, nível de experiência e ouro do seu avatar. + Bem vindo ao Habitica, onde avançar no jogo vai melhorar sua vida real! Completando metas do mundo real, você vai desbloquear equipamentos, animais de estimação, missões e mais. + Bem-vindo + Primeiramente, você precisa de um avatar no jogo para te representar! As coisas que você faz na vida real, vão afetar a saúde do seu avatar, nível de experiência e ouro. Esplêndido! Agora vamos configurar suas tarefas para que você comece a ganhar experiência e ouro. Para começar, quais partes da sua vida você quer melhorar? Trabalho Exercício - Saúde + Bem estar + Saúde + Bem-estar Escola Equipes - Ocupações + Tarefas Criatividade - Processar seus e-mails + Processar e-mails Tarefa mais importante Projeto de trabalho - 10 minutos de exercício cardiovascular - Alongamentos + 10 min cardio + Alongamento Criar agenda de atividades físicas Comer bem / Comer besteiras Passar fio dental - Agendar check-up médico + Agendar check-up Estudar/Procrastinar Fazer a lição de casa Terminar tarefa para a aula - \"Check in\" com a equipe - Atualizar a equipe do status + Confirmar com a equipe + Atualizar a equipe sobre o status Completar projeto da equipe Limpeza de 10 minutos Lavar a louça @@ -192,4 +199,41 @@ Para começar, quais partes da sua vida você quer melhorar? Estudar um mestre no ofício Trabalhar em um projeto criativo Terminar um projeto criativo + Quer nos ajudar a manter o Habitica funcionando? Você pode contribuir com os desenvolvedores ao comprar gemas!\n\nGemas permitem que você compre extras divertidos para sua conta, incluindo: \n\n - Fantasias legais para seu avatar\n - Imagens de fundo incríveis\n - Missões divertidas que te recompensam com ovos\n - A habilidade de mudar de classe antes do nível 100\n\n Muito obrigado por nos ajudar a manter o Habita o melhor possível. Sua ajuda significa muito para nós! + Minhas Guildas + Guildas Públicas + Guilda + Sair + Juntar-se + Líder + Gemas + Copiar como Afazer + Enviar mensagem privada + Bandeira + Deletar + Nome + Descrição + Adicionar marcador + Privacidade + Escrever mensagem + Cargo + Devido: %s + Raia atual: %d + Tarefa com vencimento + Equipamento de batalha + Traje + Cabeça + Acessório de cabeça + Óculos + Armadura + Costas + Corpo + Escudo + Arma + Vestir traje + Equipado + Pendente + Aceito + Rejeitado + Participantes diff --git a/Habitica/res/values-zh/strings.xml b/Habitica/res/values-zh/strings.xml index a3f8f0569..0adaa315a 100644 --- a/Habitica/res/values-zh/strings.xml +++ b/Habitica/res/values-zh/strings.xml @@ -232,4 +232,8 @@ 武器 穿上装扮 装备 + 等待中 + 接受了 + 拒绝的 + 参与者 diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java b/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java index b389d042c..444b9ee41 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java @@ -19,6 +19,7 @@ import com.habitrpg.android.habitica.ui.fragments.social.GuildsOverviewFragment; import com.habitrpg.android.habitica.ui.fragments.social.TavernFragment; import com.habitrpg.android.habitica.ui.fragments.social.party.PartyFragment; import com.habitrpg.android.habitica.ui.fragments.tasks.TasksFragment; +import com.mikepenz.google_material_typeface_library.GoogleMaterial; import com.mikepenz.materialdrawer.AccountHeader; import com.mikepenz.materialdrawer.AccountHeaderBuilder; import com.mikepenz.materialdrawer.Drawer; @@ -42,9 +43,10 @@ public class MainDrawerBuilder { public static final int SIDEBAR_EQUIPMENT = 7; public static final int SIDEBAR_STABLE = 8; public static final int SIDEBAR_PURCHASE = 9; - public static final int SIDEBAR_SETTINGS = 10; - public static final int SIDEBAR_HELP = 11; - public static final int SIDEBAR_ABOUT = 12; + public static final int SIDEBAR_NEWS = 10; + public static final int SIDEBAR_SETTINGS = 11; + public static final int SIDEBAR_HELP = 12; + public static final int SIDEBAR_ABOUT = 13; @@ -79,20 +81,19 @@ public class MainDrawerBuilder { new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_tasks)).withIdentifier(SIDEBAR_TASKS), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_skills)).withIdentifier(SIDEBAR_SKILLS), - new SectionDrawerItem().withName(activity.getString(R.string.sidebar_section_social)), + new SectionIconDrawerItem().withName(activity.getString(R.string.sidebar_section_social)).withIcon(GoogleMaterial.Icon.gmd_group), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_tavern)).withIdentifier(SIDEBAR_TAVERN), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_party)).withIdentifier(SIDEBAR_PARTY), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_guilds)).withIdentifier(SIDEBAR_GUILDS), - //new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_challenges)), - new SectionDrawerItem().withName(activity.getString(R.string.sidebar_section_inventory)), + new SectionIconDrawerItem().withName(activity.getString(R.string.sidebar_section_inventory)).withIcon(GoogleMaterial.Icon.gmd_work), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_avatar)).withIdentifier(SIDEBAR_AVATAR), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_equipment)).withIdentifier(SIDEBAR_EQUIPMENT), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_stable)).withIdentifier(SIDEBAR_STABLE).withEnabled(false).withBadge(R.string.coming_soon), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_purchaseGems)).withIdentifier(SIDEBAR_PURCHASE), - new DividerDrawerItem(), - //new SecondaryDrawerItem().withName(activity.getString(R.string.sidebar_news)), + new SectionIconDrawerItem().withName(activity.getString(R.string.sidebar_section_inventory)).withIcon(GoogleMaterial.Icon.gmd_info_outline), + new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_news)).withIdentifier(SIDEBAR_NEWS).withSelectable(false), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_settings)).withIdentifier(SIDEBAR_SETTINGS).withSelectable(false), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_help)).withIdentifier(SIDEBAR_HELP), new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_about)).withIdentifier(SIDEBAR_ABOUT).withSelectable(false) diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/SectionIconDrawerItem.java b/Habitica/src/com/habitrpg/android/habitica/ui/SectionIconDrawerItem.java new file mode 100644 index 000000000..8559ffa22 --- /dev/null +++ b/Habitica/src/com/habitrpg/android/habitica/ui/SectionIconDrawerItem.java @@ -0,0 +1,237 @@ +package com.habitrpg.android.habitica.ui; +import android.content.Context; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.support.annotation.ColorInt; +import android.support.annotation.ColorRes; +import android.support.annotation.DrawableRes; +import android.support.annotation.LayoutRes; +import android.support.annotation.StringRes; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.habitrpg.android.habitica.R; +import com.mikepenz.fastadapter.utils.ViewHolderFactory; +import com.mikepenz.iconics.typeface.IIcon; +import com.mikepenz.materialdrawer.holder.ColorHolder; +import com.mikepenz.materialdrawer.holder.ImageHolder; +import com.mikepenz.materialdrawer.holder.StringHolder; +import com.mikepenz.materialdrawer.model.AbstractDrawerItem; +import com.mikepenz.materialdrawer.model.interfaces.Nameable; +import com.mikepenz.materialdrawer.model.interfaces.Typefaceable; +import com.mikepenz.materialize.util.UIUtils; + +/** + * Created by mikepenz on 03.02.15. + */ +public class SectionIconDrawerItem extends AbstractDrawerItem implements Nameable, Typefaceable { + protected ImageHolder icon; + + protected boolean iconTinted = false; + private StringHolder name; + private boolean divider = true; + + private ColorHolder textColor; + + protected ColorHolder iconColor; + + private Typeface typeface = null; + + public SectionIconDrawerItem withName(StringHolder name) { + this.name = name; + return this; + } + + public SectionIconDrawerItem withName(String name) { + this.name = new StringHolder(name); + return this; + } + + public SectionIconDrawerItem withName(@StringRes int nameRes) { + this.name = new StringHolder(nameRes); + return this; + } + + public SectionIconDrawerItem withDivider(boolean divider) { + this.divider = divider; + return this; + } + + public SectionIconDrawerItem withTextColor(int textColor) { + this.textColor = ColorHolder.fromColor(textColor); + return this; + } + + public SectionIconDrawerItem withTextColorRes(int textColorRes) { + this.textColor = ColorHolder.fromColorRes(textColorRes); + return this; + } + + public SectionIconDrawerItem withIcon(ImageHolder icon) { + this.icon = icon; + return this; + } + + public SectionIconDrawerItem withIcon(Drawable icon) { + this.icon = new ImageHolder(icon); + return this; + } + + public SectionIconDrawerItem withIcon(@DrawableRes int iconRes) { + this.icon = new ImageHolder(iconRes); + return this; + } + + public SectionIconDrawerItem withIcon(IIcon iicon) { + this.icon = new ImageHolder(iicon); + + return this; + } + + public SectionIconDrawerItem withTypeface(Typeface typeface) { + this.typeface = typeface; + return this; + } + + public boolean hasDivider() { + return divider; + } + + public ColorHolder getTextColor() { + return textColor; + } + + public StringHolder getName() { + return name; + } + + @Override + public boolean isEnabled() { + return false; + } + + @Override + public boolean isSelected() { + return false; + } + + @Override + public int getType() { + return R.id.material_drawer_item_section; + } + + @Override + @LayoutRes + public int getLayoutRes() { + return R.layout.material_drawer_item_section_icon; + } + + @Override + public Typeface getTypeface() { + return typeface; + } + + public SectionIconDrawerItem withIconColor(@ColorInt int iconColor) { + this.iconColor = ColorHolder.fromColor(iconColor); + return this; + } + + public SectionIconDrawerItem withIconColorRes(@ColorRes int iconColorRes) { + this.iconColor = ColorHolder.fromColorRes(iconColorRes); + return this; + } + + public SectionIconDrawerItem withIconTintingEnabled(boolean iconTintingEnabled) { + this.iconTinted = iconTintingEnabled; + return this; + } + + @Deprecated + public SectionIconDrawerItem withIconTinted(boolean iconTinted) { + this.iconTinted = iconTinted; + return this; + } + + public boolean isIconTinted() { + return iconTinted; + } + + public ImageHolder getIcon() { + return icon; + } + + public ColorHolder getIconColor() { + return iconColor; + } + + public int getIconColor(Context ctx) { + return ColorHolder.color(getIconColor(), ctx, R.attr.material_drawer_primary_icon, R.color.material_drawer_primary_icon); + } + + @Override + public void bindView(ViewHolder viewHolder) { + Context ctx = viewHolder.itemView.getContext(); + + //set the identifier from the drawerItem here. It can be used to run tests + viewHolder.itemView.setId(hashCode()); + + //define this item to be not clickable nor enabled + viewHolder.view.setClickable(false); + viewHolder.view.setEnabled(false); + + //define the text color + viewHolder.name.setTextColor(ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text)); + + //set the text for the name + StringHolder.applyTo(this.getName(), viewHolder.name); + + //define the typeface for our textViews + if (getTypeface() != null) { + viewHolder.name.setTypeface(getTypeface()); + } + + //hide the divider if we do not need one + if (this.hasDivider()) { + viewHolder.divider.setVisibility(View.VISIBLE); + } else { + viewHolder.divider.setVisibility(View.GONE); + } + + //set the color for the divider + viewHolder.divider.setBackgroundColor(UIUtils.getThemeColorFromAttrOrRes(ctx, R.attr.material_drawer_divider, R.color.material_drawer_divider)); + + viewHolder.icon.setImageDrawable(getIcon().decideIcon(ctx, ctx.getResources().getColor(R.color.material_drawer_secondary_text), true, 0)); + + //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) + onPostBindView(this, viewHolder.itemView); + } + + @Override + public ViewHolderFactory getFactory() { + return new ItemFactory(); + } + + public static class ItemFactory implements ViewHolderFactory { + public ViewHolder create(View v) { + return new ViewHolder(v); + } + } + + protected static class ViewHolder extends RecyclerView.ViewHolder { + private View view; + private View divider; + private TextView name; + protected ImageView icon; + + private ViewHolder(View view) { + super(view); + this.view = view; + this.divider = view.findViewById(R.id.material_drawer_divider); + this.name = (TextView) view.findViewById(R.id.material_drawer_name); + this.icon = (ImageView) view.findViewById(R.id.material_drawer_icon); + } + } +} \ No newline at end of file diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java index 80f1ce084..ca20250e5 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java @@ -481,13 +481,12 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi //endregion Events public void fillTagFilterDrawer(List tagList) { - if (this.activity.filterDrawer != null) { + if (this.activity.filterDrawer != null && this.tagsHelper != null) { this.activity.filterDrawer.removeAllItems(); this.activity.filterDrawer.addItems( new SectionDrawerItem().withName("Filter by Tag"), new EditTextDrawer() ); - for (Tag t : tagList) { this.activity.filterDrawer.addItem(new SwitchDrawerItem() .withName(t.getName())