diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 63209b6a..9ae71cf7 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser
index b1d13576..941f4d61 100644
Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 00000000..681f41ae
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index be2c23c1..11afa9ef 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,7 +5,7 @@
-
+
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 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 {
+ private ArrayList acknowledgements;
+ private Context context;
+
+ AcknowledgementRecyclerViewAdapter(Context context, ArrayList 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);
+ 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();
+ 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;
+ 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 @@
+
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 @@
+
+
+
+
+
+
+
+
\ 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 @@
Select a picture
Select again
Error getting the image
+ Error getting the video
No camera app available
Error creating temp file
@@ -258,6 +259,7 @@
Dark Theme
Device default
Enable NSFW
+ Acknowledgement
Cannot get the link
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"/>
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index dc4f01a7..e08c9801 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.4.2'
+ classpath 'com.android.tools.build:gradle:3.5.0'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 6fbf7e5b..c94a8dad 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Thu Apr 18 18:17:08 HKT 2019
+#Thu Aug 22 20:30:24 HKT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip