diff --git a/app/build.gradle b/app/build.gradle
index 8c6b37c..d420cf3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -34,6 +34,9 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
}
dependencies {
@@ -57,6 +60,8 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.browser:browser:1.2.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.3.0'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.3.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
testImplementation 'junit:junit:4.13'
@@ -69,4 +74,6 @@ dependencies {
implementation "io.github.ponnamkarthik:richlinkpreview:1.0.9"
implementation "com.squareup.picasso:picasso:2.71828"
+ implementation "androidx.preference:preference:1.1.1"
+
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d408354..601ad42 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,20 +6,21 @@
-
-
-
+ android:theme="@style/AppTheme2"/>
+
@@ -37,5 +38,4 @@
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
-
\ No newline at end of file
diff --git a/app/src/main/java/io/saytheirnames/STNApplication.kt b/app/src/main/java/io/saytheirnames/STNApplication.kt
new file mode 100644
index 0000000..85161e1
--- /dev/null
+++ b/app/src/main/java/io/saytheirnames/STNApplication.kt
@@ -0,0 +1,18 @@
+package io.saytheirnames
+
+import android.app.Application
+import androidx.appcompat.app.AppCompatDelegate
+import androidx.preference.PreferenceManager
+
+class STNApplication : Application() {
+
+ override fun onCreate() {
+ super.onCreate()
+ initTheme()
+ }
+
+ private fun initTheme() {
+ val preferences = PreferenceManager.getDefaultSharedPreferences(this)
+ ThemeManager.applyTheme(preferences.getInt(R.string.preference_key_theme.toString(), AppCompatDelegate.MODE_NIGHT_NO))
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/saytheirnames/ThemeManager.kt b/app/src/main/java/io/saytheirnames/ThemeManager.kt
new file mode 100644
index 0000000..a695051
--- /dev/null
+++ b/app/src/main/java/io/saytheirnames/ThemeManager.kt
@@ -0,0 +1,34 @@
+package io.saytheirnames
+
+import android.content.Context
+import androidx.appcompat.app.AppCompatDelegate
+import androidx.preference.PreferenceManager
+
+object ThemeManager {
+
+ fun applyTheme(mode: Int) {
+ if (AppCompatDelegate.getDefaultNightMode() == mode) return
+ AppCompatDelegate.setDefaultNightMode(mode)
+ }
+
+ fun setTheme(mode: Int, context: Context) {
+ applyTheme(mode)
+
+ val preferences = PreferenceManager.getDefaultSharedPreferences(context)
+ preferences.edit().putInt(R.string.preference_key_theme.toString(), mode)
+ .apply()
+ }
+
+ fun isNightMode(): Boolean {
+ return getCurrentTheme() == AppCompatDelegate.MODE_NIGHT_YES
+ }
+
+ private fun getCurrentTheme(): Int {
+ return AppCompatDelegate.getDefaultNightMode()
+ }
+
+ fun toggleTheme(context: Context) {
+ if (isNightMode()) setTheme(AppCompatDelegate.MODE_NIGHT_NO, context)
+ else setTheme(AppCompatDelegate.MODE_NIGHT_YES, context)
+ }
+}
diff --git a/app/src/main/java/io/saytheirnames/activity/DonationDetailsActivity.java b/app/src/main/java/io/saytheirnames/activity/DonationDetailsActivity.java
index 67d84aa..a8db414 100644
--- a/app/src/main/java/io/saytheirnames/activity/DonationDetailsActivity.java
+++ b/app/src/main/java/io/saytheirnames/activity/DonationDetailsActivity.java
@@ -21,6 +21,7 @@
import io.saytheirnames.network.Utils;
import io.saytheirnames.utils.CustomTabUtil;
import io.saytheirnames.utils.ShareUtil;
+
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.material.snackbar.Snackbar;
@@ -36,12 +37,12 @@
public class DonationDetailsActivity extends AppCompatActivity implements View.OnClickListener {
- String identifier,image, title, desc, donationLink;
+ String identifier, image, title, desc, donationLink;
public static final String EXTRA_ID = "identifier";
private BlurImageView blurImageView;
- private ImageView donationImage,close;
+ private ImageView donationImage, close;
private TextView donationTitle, subTitle, donationDesc, socialHashtags;
private Button donationButton;
private View progress;
@@ -54,14 +55,10 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_donation_details);
-
initView();
-
Intent intent = getIntent();
-
identifier = intent.getStringExtra(EXTRA_ID);
-
- loadData();
+ loadData();
}
@SuppressLint("StaticFieldLeak")
@@ -186,7 +183,6 @@ public void onClick(View v) {
case R.id.close:
finish();
break;
-
case R.id.imgShare:
share(donationLink);
break;
diff --git a/app/src/main/java/io/saytheirnames/activity/PetitionDetailsActivity.java b/app/src/main/java/io/saytheirnames/activity/PetitionDetailsActivity.java
index 7da715f..018c800 100644
--- a/app/src/main/java/io/saytheirnames/activity/PetitionDetailsActivity.java
+++ b/app/src/main/java/io/saytheirnames/activity/PetitionDetailsActivity.java
@@ -38,9 +38,9 @@ public class PetitionDetailsActivity extends AppCompatActivity implements View.O
private ImageView imgClose, imgShare;
- private TextView txtName, txtDescription, txtShareThisPetition;
+ private TextView txtName, txtDescription;
- private Button btnSignThisPetition;
+ private Button btnSignThisPetition, txtShareThisPetition;
private ImageView actualImage;
private BlurImageView blurImageView;
@@ -174,7 +174,6 @@ public void onClick(View v) {
visitPage(petitionLink);
break;
case R.id.btnShareThisPetition:
-
case R.id.imgShare:
share(petitionLink);
break;
@@ -184,7 +183,6 @@ public void onClick(View v) {
}
}
-
private void visitPage(String url) {
CustomTabUtil.openCustomTabForUrl(this, url);
}
diff --git a/app/src/main/java/io/saytheirnames/fragments/HomeFragment.java b/app/src/main/java/io/saytheirnames/fragments/HomeFragment.java
index 0df05a8..96dd189 100644
--- a/app/src/main/java/io/saytheirnames/fragments/HomeFragment.java
+++ b/app/src/main/java/io/saytheirnames/fragments/HomeFragment.java
@@ -3,10 +3,12 @@
import android.content.res.Resources;
import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
@@ -21,6 +23,7 @@
import java.util.ArrayList;
import io.saytheirnames.R;
+import io.saytheirnames.ThemeManager;
import io.saytheirnames.activity.MainActivity;
import io.saytheirnames.adapters.FilterHomeAdapter;
import io.saytheirnames.adapters.HeaderCardRecyclerAdapter;
@@ -77,6 +80,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
initializeRecyclerView();
loadData();
+ initializeToolbar();
return mContent;
}
@@ -102,7 +106,8 @@ public int getSpanSize(int position) {
@NotNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NotNull ViewGroup viewGroup, @NotNull LoadState loadState) {
- return new RecyclerView.ViewHolder(progressBar){};
+ return new RecyclerView.ViewHolder(progressBar) {
+ };
}
@Override
@@ -110,7 +115,7 @@ public void onBindViewHolder(@NotNull RecyclerView.ViewHolder viewHolder, @NotNu
if (loadState.equals(LoadState.Loading.INSTANCE)) {
progressBar.setVisibility(View.VISIBLE);
} else {
- progressBar.setVisibility(View.GONE);
+ progressBar.setVisibility(View.GONE);
}
}
});
@@ -124,6 +129,16 @@ private void loadData() {
peoplePager.loadPeopleFromPagination();
}
+ private void initializeToolbar() {
+ androidx.appcompat.widget.Toolbar toolbar = mContent.findViewById(R.id.toolbar);
+ toolbar.inflateMenu(R.menu.fragment_home_menu);
+ toolbar.setOnMenuItemClickListener(item -> onOptionsItemSelected(item));
+ if (ThemeManager.INSTANCE.isNightMode())
+ toolbar.getMenu().findItem(R.id.theme).setIcon(R.drawable.night_theme_white_24dp);
+ else
+ toolbar.getMenu().findItem(R.id.theme).setIcon(R.drawable.light_theme_white_24dp);
+ }
+
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@@ -143,4 +158,15 @@ public void onHeaderClick() {
((MainActivity) getActivity()).updateBottomNavBasedOnTag(tag);
}
}
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.theme:
+ ThemeManager.INSTANCE.toggleTheme(getContext());
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/io/saytheirnames/utils/CustomTabUtil.java b/app/src/main/java/io/saytheirnames/utils/CustomTabUtil.java
index f570fd8..ed77c03 100644
--- a/app/src/main/java/io/saytheirnames/utils/CustomTabUtil.java
+++ b/app/src/main/java/io/saytheirnames/utils/CustomTabUtil.java
@@ -33,8 +33,8 @@ private static void openCustomChromeTab(Context context, Uri uri) {
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = intentBuilder.build();
- intentBuilder.setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary));
- intentBuilder.setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.colorPrimaryDark));
+ intentBuilder.setToolbarColor(ContextCompat.getColor(context, R.color.Primary));
+ intentBuilder.setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.PrimaryDark));
CustomTabActivityHelper.openCustomTab(context, customTabsIntent, uri, (activity, uri1) -> openWebView(context, uri1));
}
diff --git a/app/src/main/res/color/bottom_nav_color.xml b/app/src/main/res/color/bottom_nav_color.xml
new file mode 100644
index 0000000..52d9bc8
--- /dev/null
+++ b/app/src/main/res/color/bottom_nav_color.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_background.xml b/app/src/main/res/drawable/button_background.xml
index 3f990cc..b3277d4 100644
--- a/app/src/main/res/drawable/button_background.xml
+++ b/app/src/main/res/drawable/button_background.xml
@@ -3,7 +3,7 @@
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/card_border.xml b/app/src/main/res/drawable/card_border.xml
index b317527..ed192dc 100644
--- a/app/src/main/res/drawable/card_border.xml
+++ b/app/src/main/res/drawable/card_border.xml
@@ -5,6 +5,7 @@
android:width="2dp"/>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/default_line.xml b/app/src/main/res/drawable/default_line.xml
index dbcbd47..9a6fb9e 100644
--- a/app/src/main/res/drawable/default_line.xml
+++ b/app/src/main/res/drawable/default_line.xml
@@ -9,7 +9,7 @@
android:thickness="2dp"
android:useLevel="false">
+ android:color="@color/colorGrey"/>
diff --git a/app/src/main/res/drawable/donation_btn.xml b/app/src/main/res/drawable/donation_btn.xml
index dd3520d..3b342e9 100644
--- a/app/src/main/res/drawable/donation_btn.xml
+++ b/app/src/main/res/drawable/donation_btn.xml
@@ -1,6 +1,6 @@
-
-
diff --git a/app/src/main/res/drawable/light_theme_white_24dp.xml b/app/src/main/res/drawable/light_theme_white_24dp.xml
new file mode 100644
index 0000000..400d03b
--- /dev/null
+++ b/app/src/main/res/drawable/light_theme_white_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/night_theme_white_24dp.xml b/app/src/main/res/drawable/night_theme_white_24dp.xml
new file mode 100644
index 0000000..68e3b9f
--- /dev/null
+++ b/app/src/main/res/drawable/night_theme_white_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/selected_button_background.xml b/app/src/main/res/drawable/selected_button_background.xml
index 9e4131f..8d80a3c 100644
--- a/app/src/main/res/drawable/selected_button_background.xml
+++ b/app/src/main/res/drawable/selected_button_background.xml
@@ -2,8 +2,8 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selected_line.xml b/app/src/main/res/drawable/selected_line.xml
index 2d50b11..61bc327 100644
--- a/app/src/main/res/drawable/selected_line.xml
+++ b/app/src/main/res/drawable/selected_line.xml
@@ -9,7 +9,7 @@
android:thickness="2dp"
android:useLevel="false">
+ android:color="@color/OnBackground"/>
diff --git a/app/src/main/res/drawable/social_media_button.xml b/app/src/main/res/drawable/social_media_button.xml
index 3f990cc..b3277d4 100644
--- a/app/src/main/res/drawable/social_media_button.xml
+++ b/app/src/main/res/drawable/social_media_button.xml
@@ -3,7 +3,7 @@
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_details.xml b/app/src/main/res/layout/activity_details.xml
index d3eb552..9345a4f 100644
--- a/app/src/main/res/layout/activity_details.xml
+++ b/app/src/main/res/layout/activity_details.xml
@@ -19,8 +19,8 @@
-
-
@@ -116,7 +113,7 @@
android:layout_marginStart="32dp"
android:textSize="21sp"
android:textStyle="bold"
- android:textColor="@android:color/primary_text_light"
+ android:textColor="@color/OnBackground"
app:layout_constraintTop_toBottomOf="@id/hero_container"
app:layout_constraintStart_toStartOf="parent"
tools:text="FIRSTNAME LAST"/>
@@ -313,18 +310,15 @@
app:layout_constraintBottom_toBottomOf="parent"/>
-
-
-
+ android:background="@color/Background">
diff --git a/app/src/main/res/layout/activity_donation_details.xml b/app/src/main/res/layout/activity_donation_details.xml
index 6190fc9..e87882f 100644
--- a/app/src/main/res/layout/activity_donation_details.xml
+++ b/app/src/main/res/layout/activity_donation_details.xml
@@ -10,7 +10,7 @@
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/colorBlack"
+ android:background="@color/Primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -35,7 +35,7 @@
android:fontFamily="@font/raleway"
android:text="@string/donations"
android:textAllCaps="true"
- android:textColor="@android:color/white"
+ android:textColor="@color/OnPrimary"
android:textSize="19dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -114,6 +114,7 @@
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:orientation="vertical"
+ android:background="@color/Background"
app:layout_constraintEnd_toEndOf="@+id/frameLayout"
app:layout_constraintStart_toStartOf="@+id/frameLayout"
app:layout_constraintTop_toBottomOf="@+id/frameLayout">
@@ -123,7 +124,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
- android:textColor="@color/colorBlack"
+ android:textColor="@color/OnBackground"
android:textSize="21sp"
android:textStyle="bold" />
@@ -133,7 +134,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:text="@string/content"
- android:textColor="@color/colorBlack"
+ android:textColor="@color/OnBackground"
android:textSize="18sp"
android:textStyle="bold" />
@@ -142,7 +143,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
- android:textColor="@color/colorBlack" />
+ android:textColor="@color/OnBackground" />
@@ -170,7 +171,7 @@
android:layout_height="2dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
- android:background="@color/colorSecondaryGrey" />
+ android:background="@color/colorGrey" />
@@ -92,7 +92,7 @@
-
+ app:cardElevation="1dp">
@@ -63,12 +63,8 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
- android:background="@drawable/donation_btn"
android:text="Find Out More"
- android:textAllCaps="true"
- android:textColor="@color/colorBlack"
- android:textSize="17sp"
- android:textStyle="bold"
+ style="@style/Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/donation_desc"
app:layout_constraintStart_toStartOf="@+id/donation_desc"
diff --git a/app/src/main/res/layout/filter_item.xml b/app/src/main/res/layout/filter_item.xml
index 2e51d36..0772d7a 100644
--- a/app/src/main/res/layout/filter_item.xml
+++ b/app/src/main/res/layout/filter_item.xml
@@ -16,7 +16,7 @@
android:background="@drawable/selected_button_background"
android:padding="8dp"
android:singleLine="true"
- android:textColor="@android:color/white"
+ android:textColor="@color/OnPrimary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml
index 732f1ce..5d74eef 100644
--- a/app/src/main/res/layout/fragment_about.xml
+++ b/app/src/main/res/layout/fragment_about.xml
@@ -8,7 +8,6 @@
android:orientation="vertical"
tools:context=".fragments.AboutFragment">
-
@@ -48,8 +47,8 @@
-
+ android:orientation="vertical"
+ android:background="@color/Background">
@@ -85,7 +84,7 @@
android:layout_marginTop="@dimen/margin_16dp"
android:layout_marginEnd="@dimen/margin_16dp"
android:text="@string/about_this_project_details"
- android:textColor="@color/colorBlack"
+ android:textColor="@color/OnBackground"
android:textSize="16sp" />
@@ -108,7 +107,7 @@
android:layout_marginTop="@dimen/margin_16dp"
android:layout_marginEnd="@dimen/margin_16dp"
android:text="@string/request_edit_or_removal.details"
- android:textColor="@color/colorBlack"
+ android:textColor="@color/OnBackground"
android:textSize="16sp" />
-
-
-
-
-
-
-
@@ -79,6 +67,7 @@
android:columnWidth="150dp"
android:numColumns="2"
android:overScrollMode="never"
+ android:background="@color/Background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/fragment_petitions.xml b/app/src/main/res/layout/fragment_petitions.xml
index 20fea84..2a8735d 100644
--- a/app/src/main/res/layout/fragment_petitions.xml
+++ b/app/src/main/res/layout/fragment_petitions.xml
@@ -16,7 +16,7 @@
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/colorBlack"
+ android:background="@color/Primary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:contentInsetStart="20dp"
@@ -32,7 +32,7 @@
android:fontFamily="@font/raleway"
android:text="@string/petitions"
android:textAllCaps="true"
- android:textColor="@android:color/white"
+ android:textColor="@color/OnPrimary"
android:textSize="18sp"
android:textStyle="bold" />
@@ -70,17 +70,6 @@
android:layout_height="wrap_content"
android:orientation="vertical">
-
-
+ app:layout_constraintTop_toBottomOf="@+id/toolbar" />
diff --git a/app/src/main/res/layout/hashtag_item.xml b/app/src/main/res/layout/hashtag_item.xml
index 68b6262..2e2ce79 100644
--- a/app/src/main/res/layout/hashtag_item.xml
+++ b/app/src/main/res/layout/hashtag_item.xml
@@ -3,7 +3,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="@drawable/social_media_button"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
@@ -12,14 +11,9 @@