diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java
index e7d39c6af..79fde71e4 100644
--- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java
@@ -63,6 +63,15 @@ public class SettingsFragment extends PreferenceFragment {
return true;
});
+ //Check if the Author Name switch is enabled and appropriately handle the author name usage
+ SwitchPreference useAuthorName = (SwitchPreference) findPreference("useAuthorName");
+ EditTextPreference authorName = (EditTextPreference) findPreference("authorName");
+ authorName.setEnabled(prefs.getBoolean("useAuthorName", false));
+ useAuthorName.setOnPreferenceChangeListener((preference, newValue) -> {
+ authorName.setEnabled((Boolean)newValue);
+ return true;
+ });
+
final EditTextPreference uploadLimit = (EditTextPreference) findPreference("uploads");
int uploads = prefs.getInt(Prefs.UPLOADS_SHOWING, 100);
uploadLimit.setText(uploads + "");
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java
index 680a16714..6b63eb0c9 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java
@@ -13,6 +13,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.IBinder;
+import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.text.TextUtils;
@@ -103,6 +104,15 @@ public class UploadController {
@SuppressLint("StaticFieldLeak")
private void startUpload(final Contribution contribution, final ContributionUploadProgress onComplete) {
//Set creator, desc, and license
+
+ // If author name is enabled and set, use it
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+
+ if(preferences != null && preferences.getBoolean("useAuthorName", false)) {
+ String authorName = preferences.getString("authorName", "");
+ contribution.setCreator(authorName);
+ }
+
if (TextUtils.isEmpty(contribution.getCreator())) {
Account currentAccount = sessionManager.getCurrentAccount();
if (currentAccount == null) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3f25a4e5c..1f99d0773 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -370,6 +370,10 @@
Error occurred!
Commons Notification
+ Use custom author name
+ Use a custom author name instead of your username while uploading photos
+ Custom author name
+ The custom author name to use instead of your username in uploads
Contributions
Nearby
Notifications
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 39d0f3872..cde68728a 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -36,6 +36,17 @@
android:inputType="numberDecimal"
android:maxLength="3" />
+
+
+
+