aboutsummaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-08-24 08:27:34 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-08-24 08:27:34 +0000
commit4d4e6165f0e1bcd72c54fa015a9e1112103e9062 (patch)
treeba276cfc847fd2addc888078784998a2df957554 /app/src/main
parent4a3266e68994b55bf1fc40256cd65c3ac831d2e8 (diff)
downloadinfinity-for-reddit-4d4e6165f0e1bcd72c54fa015a9e1112103e9062.tar
infinity-for-reddit-4d4e6165f0e1bcd72c54fa015a9e1112103e9062.tar.gz
infinity-for-reddit-4d4e6165f0e1bcd72c54fa015a9e1112103e9062.tar.bz2
infinity-for-reddit-4d4e6165f0e1bcd72c54fa015a9e1112103e9062.tar.lz
infinity-for-reddit-4d4e6165f0e1bcd72c54fa015a9e1112103e9062.tar.xz
infinity-for-reddit-4d4e6165f0e1bcd72c54fa015a9e1112103e9062.tar.zst
infinity-for-reddit-4d4e6165f0e1bcd72c54fa015a9e1112103e9062.zip
Add an acknowledgement page in settings.
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/Settings/Acknowledgement.java27
-rw-r--r--app/src/main/java/Settings/AcknowledgementFragment.java106
-rw-r--r--app/src/main/java/Settings/AcknowledgementRecyclerViewAdapter.java67
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java38
-rw-r--r--app/src/main/res/layout/fragment_acknowledgement.xml6
-rw-r--r--app/src/main/res/layout/item_acknowledgement.xml23
-rw-r--r--app/src/main/res/values/strings.xml2
-rw-r--r--app/src/main/res/xml/main_preferences.xml5
8 files changed, 258 insertions, 16 deletions
diff --git a/app/src/main/java/Settings/Acknowledgement.java b/app/src/main/java/Settings/Acknowledgement.java
new file mode 100644
index 00000000..26a5a064
--- /dev/null
+++ b/app/src/main/java/Settings/Acknowledgement.java
@@ -0,0 +1,27 @@
+package Settings;
+
+import android.net.Uri;
+
+class Acknowledgement {
+ private String name;
+ private String introduction;
+ private Uri link;
+
+ Acknowledgement(String name, String introduction, Uri link) {
+ this.name = name;
+ this.introduction = introduction;
+ this.link = link;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getIntroduction() {
+ return introduction;
+ }
+
+ public Uri getLink() {
+ return link;
+ }
+}
diff --git a/app/src/main/java/Settings/AcknowledgementFragment.java b/app/src/main/java/Settings/AcknowledgementFragment.java
new file mode 100644
index 00000000..7a19a0a5
--- /dev/null
+++ b/app/src/main/java/Settings/AcknowledgementFragment.java
@@ -0,0 +1,106 @@
+package Settings;
+
+
+import android.app.Activity;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import ml.docilealligator.infinityforreddit.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class AcknowledgementFragment extends Fragment {
+
+
+ public AcknowledgementFragment() {
+ // Required empty public constructor
+ }
+
+ @BindView(R.id.recycler_view_acknowledgement_fragment) RecyclerView recyclerView;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_acknowledgement, container, false);
+ ButterKnife.bind(this, rootView);
+
+ Activity activity = getActivity();
+
+ ArrayList<Acknowledgement> acknowledgements = new ArrayList<>();
+ acknowledgements.add(new Acknowledgement("ExoPlayer",
+ "An application level media player for Android",
+ Uri.parse("https://github.com/google/ExoPlayer")));
+ acknowledgements.add(new Acknowledgement("GestureViews",
+ "ImageView and FrameLayout with gestures control and position animation",
+ Uri.parse("https://github.com/alexvasilkov/GestureViews")));
+ acknowledgements.add(new Acknowledgement("Glide",
+ "A fast and efficient open source media management and image loading framework for Android",
+ Uri.parse("https://github.com/bumptech/glide")));
+ acknowledgements.add(new Acknowledgement("Swipe",
+ "Detects swipe events on Android with listener and RxJava Observable",
+ Uri.parse("https://github.com/pwittchen/swipe")));
+ acknowledgements.add(new Acknowledgement("RxAndroid",
+ "Android specific bindings for RxJava 2",
+ Uri.parse("https://github.com/ReactiveX/RxAndroid")));
+ acknowledgements.add(new Acknowledgement("RxJava",
+ "Reactive extensions for the JVM",
+ Uri.parse("https://github.com/ReactiveX/RxJava")));
+ acknowledgements.add(new Acknowledgement("Retrofit",
+ "Type-safe HTTP client for Android and Java by Square, Inc.",
+ Uri.parse("https://github.com/square/retrofit")));
+ acknowledgements.add(new Acknowledgement("Dagger",
+ "A fast dependency injector for Java and Android.",
+ Uri.parse("https://github.com/google/dagger")));
+ acknowledgements.add(new Acknowledgement("Butter Knife",
+ "Field and method binding for Android views",
+ Uri.parse("https://github.com/JakeWharton/butterknife")));
+ acknowledgements.add(new Acknowledgement("Aspect Ratio ImageView",
+ "A simple imageview which scales the width or height aspect with the given ratio",
+ Uri.parse("https://github.com/santalu/aspect-ratio-imageview")));
+ acknowledgements.add(new Acknowledgement("MaterialLoadingProgressBar",
+ "A styled ProgressBar",
+ Uri.parse("https://github.com/lsjwzh/MaterialLoadingProgressBar")));
+ acknowledgements.add(new Acknowledgement("Markwon",
+ "A markdown library for Android",
+ Uri.parse("https://github.com/noties/Markwon")));
+ acknowledgements.add(new Acknowledgement("android-gif-drawable",
+ "Views and Drawable for animated GIFs in Android.",
+ Uri.parse("https://github.com/koral--/android-gif-drawable")));
+ acknowledgements.add(new Acknowledgement("SimpleSearchView",
+ "A simple SearchView for Android based on Material Design",
+ Uri.parse("https://github.com/Ferfalk/SimpleSearchView")));
+ acknowledgements.add(new Acknowledgement("EventBus",
+ "A publish/subscribe event bus for Android and Java",
+ Uri.parse("https://github.com/greenrobot/EventBus")));
+ acknowledgements.add(new Acknowledgement("Customized and Expandable TextView",
+ "Simple library to change the Textview as rectangle, circle and square shapes",
+ Uri.parse("https://github.com/Rajagopalr3/CustomizedTextView")));
+ acknowledgements.add(new Acknowledgement("Rounded Bottom Sheet",
+ "Bottom sheet with rounded corners",
+ Uri.parse("https://github.com/Deishelon/RoundedBottomSheet")));
+ acknowledgements.add(new Acknowledgement("Bridge",
+ "A library for avoiding TransactionTooLargeException during state saving and restoration",
+ Uri.parse("https://github.com/livefront/bridge")));
+ acknowledgements.add(new Acknowledgement("Android-State",
+ "A utility library for Android to save objects in a Bundle without any boilerplate",
+ Uri.parse("https://github.com/evernote/android-state")));
+
+ AcknowledgementRecyclerViewAdapter adapter = new AcknowledgementRecyclerViewAdapter(activity, acknowledgements);
+ recyclerView.setLayoutManager(new LinearLayoutManager(activity));
+ recyclerView.setAdapter(adapter);
+
+ return rootView;
+ }
+}
diff --git a/app/src/main/java/Settings/AcknowledgementRecyclerViewAdapter.java b/app/src/main/java/Settings/AcknowledgementRecyclerViewAdapter.java
new file mode 100644
index 00000000..81286903
--- /dev/null
+++ b/app/src/main/java/Settings/AcknowledgementRecyclerViewAdapter.java
@@ -0,0 +1,67 @@
+package Settings;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import ml.docilealligator.infinityforreddit.LinkResolverActivity;
+import ml.docilealligator.infinityforreddit.R;
+
+class AcknowledgementRecyclerViewAdapter extends RecyclerView.Adapter<AcknowledgementRecyclerViewAdapter.AcknowledgementViewHolder> {
+ private ArrayList<Acknowledgement> acknowledgements;
+ private Context context;
+
+ AcknowledgementRecyclerViewAdapter(Context context, ArrayList<Acknowledgement> acknowledgements) {
+ this.context = context;
+ this.acknowledgements = acknowledgements;
+ }
+
+ @NonNull
+ @Override
+ public AcknowledgementViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new AcknowledgementViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_acknowledgement, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull AcknowledgementViewHolder holder, int position) {
+ Acknowledgement acknowledgement = acknowledgements.get(holder.getAdapterPosition());
+ if(acknowledgement != null) {
+ holder.nameTextView.setText(acknowledgement.getName());
+ holder.introductionTextView.setText(acknowledgement.getIntroduction());
+ holder.itemView.setOnClickListener(view -> {
+ if(context != null) {
+ Intent intent = new Intent(context, LinkResolverActivity.class);
+ intent.setData(acknowledgement.getLink());
+ context.startActivity(intent);
+ }
+ });
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return acknowledgements == null ? 0 : acknowledgements.size();
+ }
+
+ class AcknowledgementViewHolder extends RecyclerView.ViewHolder {
+ View itemView;
+ @BindView(R.id.name_text_view_item_acknowledgement) TextView nameTextView;
+ @BindView(R.id.introduction_text_view_item_acknowledgement) TextView introductionTextView;
+
+ AcknowledgementViewHolder(@NonNull View itemView) {
+ super(itemView);
+ ButterKnife.bind(this, itemView);
+ this.itemView = itemView;
+ }
+ }
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java
index c7cde780..bfdb0a21 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java
@@ -465,24 +465,26 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
if(resultCode == RESULT_OK) {
- subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
- iconUrl = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
- subredditSelected = true;
- subredditIsUser = data.getExtras().getBoolean(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_IS_USER);
-
- subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
- subredditNameTextView.setText(subredditName);
- displaySubredditIcon();
-
- flairTextView.setVisibility(View.VISIBLE);
- flairTextView.setBackgroundColor(getResources().getColor(android.R.color.transparent));
- flairTextView.setText(getString(R.string.flair));
- flair = null;
+ if(data != null) {
+ subredditName = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
+ iconUrl = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
+ subredditSelected = true;
+ subredditIsUser = data.getBooleanExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_IS_USER, false);
+
+ subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
+ subredditNameTextView.setText(subredditName);
+ displaySubredditIcon();
+
+ flairTextView.setVisibility(View.VISIBLE);
+ flairTextView.setBackgroundColor(getResources().getColor(android.R.color.transparent));
+ flairTextView.setText(getString(R.string.flair));
+ flair = null;
+ }
}
} else if(requestCode == PICK_VIDEO_REQUEST_CODE) {
if(resultCode == RESULT_OK) {
if(data == null) {
- Snackbar.make(coordinatorLayout, R.string.error_getting_image, Snackbar.LENGTH_SHORT).show();
+ Snackbar.make(coordinatorLayout, R.string.error_getting_video, Snackbar.LENGTH_SHORT).show();
return;
}
@@ -490,8 +492,12 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
loadVideo();
}
} else if (requestCode == CAPTURE_VIDEO_REQUEST_CODE) {
- videoUri = data.getData();
- loadVideo();
+ if(data != null) {
+ videoUri = data.getData();
+ loadVideo();
+ } else {
+ Snackbar.make(coordinatorLayout, R.string.error_getting_video, Snackbar.LENGTH_SHORT).show();
+ }
}
}
diff --git a/app/src/main/res/layout/fragment_acknowledgement.xml b/app/src/main/res/layout/fragment_acknowledgement.xml
new file mode 100644
index 00000000..5f164c83
--- /dev/null
+++ b/app/src/main/res/layout/fragment_acknowledgement.xml
@@ -0,0 +1,6 @@
+<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/recycler_view_acknowledgement_fragment"
+ tools:context="Settings.AcknowledgementFragment"/>
diff --git a/app/src/main/res/layout/item_acknowledgement.xml b/app/src/main/res/layout/item_acknowledgement.xml
new file mode 100644
index 00000000..543c6829
--- /dev/null
+++ b/app/src/main/res/layout/item_acknowledgement.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="16dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:background="?attr/selectableItemBackground">
+
+ <TextView
+ android:id="@+id/name_text_view_item_acknowledgement"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@color/primaryTextColor"
+ android:textSize="16sp" />
+
+ <TextView
+ android:id="@+id/introduction_text_view_item_acknowledgement"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 37a3518f..8a88d944 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -146,6 +146,7 @@
<string name="select_from_gallery">Select a picture</string>
<string name="select_again">Select again</string>
<string name="error_getting_image">Error getting the image</string>
+ <string name="error_getting_video">Error getting the video</string>
<string name="no_camera_available">No camera app available</string>
<string name="error_creating_temp_file">Error creating temp file</string>
@@ -258,6 +259,7 @@
<string name="settings_theme_dark_theme_summary">Dark Theme</string>
<string name="settings_theme_system_default_summary">Device default</string>
<string name="settings_enable_nsfw_title">Enable NSFW</string>
+ <string name="settings_acknowledgement_master_title">Acknowledgement</string>
<string name="no_link_available">Cannot get the link</string>
</resources>
diff --git a/app/src/main/res/xml/main_preferences.xml b/app/src/main/res/xml/main_preferences.xml
index 1578ff63..7ccfa301 100644
--- a/app/src/main/res/xml/main_preferences.xml
+++ b/app/src/main/res/xml/main_preferences.xml
@@ -21,4 +21,9 @@
app:key="nsfw"
app:title="@string/settings_enable_nsfw_title"/>
+ <Preference
+ app:key="acknowledgement_master"
+ app:title="@string/settings_acknowledgement_master_title"
+ app:fragment="Settings.AcknowledgementFragment" />
+
</androidx.preference.PreferenceScreen> \ No newline at end of file