This commit is contained in:
2026-06-11 11:49:13 +01:00
parent 65dce225de
commit 9204ddd4ce
6 changed files with 229 additions and 0 deletions

View File

@@ -19,6 +19,9 @@
<activity
android:name=".DefinicoesActivity"
android:exported="false" />
<activity
android:name=".TermosPoliticasActivity"
android:exported="false" />
<activity
android:name=".TelaInicialActivity"
android:exported="false" />

View File

@@ -116,6 +116,24 @@ public class DefinicoesActivity extends AppCompatActivity {
});
}
TextView tvTerms = findViewById(R.id.tvTerms);
if (tvTerms != null) {
tvTerms.setOnClickListener(v -> {
Intent intent = new Intent(DefinicoesActivity.this, TermosPoliticasActivity.class);
intent.putExtra("tipo_documento", "terms");
startActivity(intent);
});
}
TextView tvPrivacy = findViewById(R.id.tvPrivacy);
if (tvPrivacy != null) {
tvPrivacy.setOnClickListener(v -> {
Intent intent = new Intent(DefinicoesActivity.this, TermosPoliticasActivity.class);
intent.putExtra("tipo_documento", "privacy");
startActivity(intent);
});
}
btnBack.setOnClickListener(v -> {
finish();
});

View File

@@ -0,0 +1,50 @@
package com.example.lifegrid;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.text.HtmlCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
public class TermosPoliticasActivity extends AppCompatActivity {
private ImageView btnBack;
private TextView tvTitle;
private TextView tvContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_termos_politicas);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
btnBack = findViewById(R.id.btnBack);
tvTitle = findViewById(R.id.tvTitle);
tvContent = findViewById(R.id.tvContent);
btnBack.setOnClickListener(v -> finish());
String tipoDocumento = getIntent().getStringExtra("tipo_documento");
if (tipoDocumento != null) {
if (tipoDocumento.equals("terms")) {
tvTitle.setText(R.string.terms_title);
String htmlText = getString(R.string.terms_content);
tvContent.setText(HtmlCompat.fromHtml(htmlText, HtmlCompat.FROM_HTML_MODE_LEGACY));
} else if (tipoDocumento.equals("privacy")) {
tvTitle.setText(R.string.privacy_title);
String htmlText = getString(R.string.privacy_content);
tvContent.setText(HtmlCompat.fromHtml(htmlText, HtmlCompat.FROM_HTML_MODE_LEGACY));
}
}
}
}

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/branco"
tools:context=".TermosPoliticasActivity">
<!-- Header -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/headerLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/diagonalarrowleftdownoutline_110924"
app:tint="@color/preto"
android:rotation="45"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:contentDescription="Voltar" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Documento"
android:textColor="@color/preto"
android:textSize="22sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- Scrollable content area -->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/headerLayout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:id="@+id/tvContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/preto"
android:textSize="15sp"
android:lineSpacingMultiplier="1.25"
android:linksClickable="true"
android:autoLink="all" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -43,4 +43,52 @@
<item>USD ($)</item>
<item>BRL (R$)</item>
</string-array>
<string name="terms_title">Termos e Condições</string>
<string name="terms_content"><![CDATA[
<h3><b>1. Introdução</b></h3>
<p>Bem-vindo ao <b>LifeGrid</b>. Ao descarregar, instalar ou utilizar a nossa aplicação, o utilizador concorda e aceita cumprir integralmente os presentes Termos e Condições de Serviço.</p>
<h3><b>2. Descrição do Serviço</b></h3>
<p>O LifeGrid é uma aplicação de gestão de finanças pessoais concebida para ajudar os utilizadores a registar e categorizar transações financeiras, gerir e monitorizar ativos, estabelecer metas financeiras e guardar faturas ou outros documentos comprovativos associados às suas finanças.</p>
<h3><b>3. Registo e Segurança da Conta</b></h3>
<p>Para usufruir de todas as funcionalidades da aplicação, é necessária a criação de uma conta de utilizador através de um endereço de correio eletrónico válido e uma palavra-passe. O utilizador é o único responsável por manter a confidencialidade das suas credenciais de acesso, bem como por qualquer atividade realizada sob a sua conta.</p>
<h3><b>4. Propriedade Intelectual</b></h3>
<p>Todo o design, código-fonte, elementos gráficos, logótipos e conteúdos da aplicação LifeGrid são propriedade exclusiva da equipa de desenvolvimento e protegidos por leis de direitos de autor nacionais e internacionais.</p>
<h3><b>5. Uso Aceitável e Proibições</b></h3>
<p>O utilizador compromete-se a não utilizar o LifeGrid para qualquer fim ilegal, fraudulento ou não autorizado. É estritamente proibido interferir com a segurança dos servidores e bases de dados da infraestrutura (Firebase), ou tentar contornar quaisquer mecanismos de segurança da aplicação.</p>
<h3><b>6. Limitação de Responsabilidade</b></h3>
<p>O LifeGrid é fornecido "tal como está" e "conforme disponível". Não garantimos que a aplicação funcione de forma ininterrupta ou isenta de erros. As decisões financeiras tomadas com base nas informações apresentadas na aplicação são da inteira e exclusiva responsabilidade do utilizador. O LifeGrid não constitui ou substitui qualquer aconselhamento financeiro profissional.</p>
<h3><b>7. Alterações aos Termos</b></h3>
<p>Reservamo-nos o direito de alterar ou atualizar estes Termos e Condições a qualquer momento. Quaisquer atualizações serão publicadas nesta secção e o uso continuado da aplicação constitui a aceitação tácita das novas condições.</p>
]]></string>
<string name="privacy_title">Política de Privacidade</string>
<string name="privacy_content"><![CDATA[
<h3><b>1. Informações que Recolhemos</b></h3>
<p>Recolhemos os dados que nos faculta ativamente ao registar-se e utilizar a aplicação. Estes incluem:</p>
<ul>
<li>Dados de Registo: Nome de utilizador e endereço de correio eletrónico.</li>
<li>Dados Financeiros: Transações registadas, montantes, categorias, ativos introduzidos e metas estabelecidas.</li>
<li>Documentos: Faturas e outros comprovativos fotográficos que decida associar às suas transações.</li>
</ul>
<h3><b>2. Finalidade do Tratamento de Dados</b></h3>
<p>Os dados recolhidos destinam-se única e exclusivamente a permitir o funcionamento adequado da aplicação LifeGrid, permitindo-lhe gerir a sua carteira, analisar gráficos de despesas/receitas, acompanhar o progresso de metas e guardar comprovativos digitais.</p>
<h3><b>3. Armazenamento e Segurança dos Dados</b></h3>
<p>Para garantir o armazenamento seguro dos seus dados, o LifeGrid utiliza a plataforma cloud <b>Google Firebase</b> (incluindo Firebase Authentication para gestão de identidade, Firebase Realtime Database para sincronização de dados e Firebase Storage para armazenamento de imagens). Implementamos práticas de segurança adequadas para prevenir o acesso não autorizado, alteração ou eliminação dos seus dados.</p>
<h3><b>4. Partilha de Dados com Terceiros</b></h3>
<p>O LifeGrid não partilha, vende, aluga ou comercializa os seus dados pessoais com terceiros para quaisquer fins comerciais ou de marketing. Os dados são transferidos apenas para os servidores do Firebase para efeitos estritos de alojamento e sincronização.</p>
<h3><b>5. Direitos do Utilizador</b></h3>
<p>O utilizador tem controlo total sobre os seus dados, podendo adicionar, editar ou apagar as suas transações, faturas e detalhes de conta a qualquer momento. Se desejar eliminar permanentemente a sua conta e todos os dados associados dos nossos servidores, pode fazê-lo contactando-nos ou solicitando a eliminação.</p>
<h3><b>6. Alterações a esta Política</b></h3>
<p>Podemos atualizar esta Política de Privacidade periodicamente para refletir mudanças nas nossas práticas ou por razões operacionais/legais. Recomendamos a consulta regular desta secção para se manter informado.</p>
]]></string>
</resources>