===Custom pictures selector which indicates what pictures have been uploaded already
===Profile Information
**Name :**Prince
**Email :**kushwahaprince418@gmail.com
**University :**Krishna engineering college, Ghaziabad, Uttar Pradesh
**Github Link :**https://github.com/Prince-kushwaha
**Linkedin :**https://www.linkedin.com/in/prince-kushwaha-bb80a8198/
**Other communication modes :** Zulip,
**Location during GSoC: ** Gurugram, Harayana,India
**Typical working hours (include your timezone) :** Between 4 pm to 2 am UTC +5:30
### **Possible Mentor(s)**
**Mentor:** @Nicolas_Raoul (Nicolas Raoul)
**Mentor:** @Madhurgupta10(Madhur gupta)
===Synopsis
The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Commons is not only the image repository for Wikipedia but an independent project that seeks to document the world with photos, videos, and recordings.
**Project:**
The project is about adding a Custom Picture selector activity that also indicates what pictures have been uploaded to the commons android app.
Issue link : https://github.com/commons-app/apps-android-commons/issues/175
===About Me
I am second year student, pursuing B.tech in Computer Science and Engineering from Krishna engeering College , Ghaziabad, Uttar Pradesh
I love Android Development and I have been doing it for the past one years. I am also a strong supporter of open source and I love contributing to it. I have contributed to the Commons Android app since october 2020.
I am an active member of Website and software development cell the official website and app development team of the institute.
I am also completed WebDevelopment course from Udemy :[[ https://udemy-certificate.s3.amazonaws.com/image/UC-aff85223-97db-4028-8eb1-a072c0a8b0ee.jpg|Certificated]]
Competitive programming
[[ https://codeforces.com/profile/princekushwaha | Codeforce profile ]]
**Other Skills** - Developing Websites (Frontend and Backend) using HTML, CSS, Javascript and NodeJs, MongoDB
===Past Experience
Past Experience
I am love android Development and contributing to the open source projects
I am also doing web web development and competitive programming
**Projects**
- [[ https://github.com/Prince-kushwaha/QuizzAdminApp | QuizAdminApp]] :Learn Firebase authentication, MVM, viewModel, Firebase DataBase
- QuizApp :Learn Firebase DataBase, MVM
- [[ https://github.com/Prince-kushwaha/TodoListWebapplication | Todo-Website]] :Learn css, html ,Javascript ,ejs, mongoDB, express
- [[ https://github.com/Prince-kushwaha/Blog-Website | Blog -website fonted ]]:Learn Html,css , Javascript, MongoDB
competitive programming
[[ https://codeforces.com/profile/princekushwaha | Codeforce profile ]]
**Other Skills** - Developing Websites (Frontend and Backend) using HTML, CSS, Javascript, Python and NodeJs, MongoDB
==Implementation
**What can be implemented?**
- Custom picture selector to select image for upload from phone
- If an picture is already upload then on picture show an thumbails of Commons log and that picture is not selectable for
Upload
==Mockups
**Design 1 **
{F34274483}
**Design 2**
{F34259313}
- A Linear view of all the albums on the phone arranged by the last modified data (camera, all media given higher priority).
- Display the name, count of media items on the respective folder.
- Show the thumbnail of the most recent item as the cover image for the folder.
**Design 3**
{F34272762}
- Multiple image select activity
- User not allowed to select already uploaded images.
===**Implementation Strategy**
{F34274947}
**Create an UI for custom image selector**
- Create Floating action button for custom image selector and add it to the +(plus) floating action buttton in contribution Activity
- Define layout attributes, create XML files for both Design 1 , Design 2, Design 3
- Create java files handling UI functionalities such as display folder name and item count, click listeners, scroll and animations.
- Create a data loader class, get the data from content resolvers, and load thumbnails in the UI using glide.
**Integrate the API**
- Create an Model which handle API
- Commons has a simple API to check the presence or not of a file, it works by sending the SHA1 checksum to the URL https://commons.wikimedia.org/w/api.php?action=query&list=allimages&format=xml&aisha1=<put SHA1 here>
**Implement caching the data with images**
- Create an viewModel which handle caching
- use the [[ https://github.com/nostra13/Android-Universal-Image-Loader | Univerasal-image-Loader]] library for caching of
image
**Integrate custom image selector activity with the Upload activity**
- Create an class which forwords selected image from custom image selector Activity to Upload Activity, to start Uploading
process
###**Relevant Skills**
- Familiar with android architecture components.
- UI design in Android.
- Android SDK.
- Jetpack library.
- Github and git Version control.
- Unit Tests in Android. ( Familiar with Robolectric environment on Junit framework )
- Basics of Kotlin
### **Involvement**
* **How are you involved with open-source?**
I am actively contributing to the Commons Android app project since October 2020, so far I have about 18 PR merged and also I have opened a lot of issues. I have also contributed to the other open-source organizations like Anki-Android,oppia-android
* **Apart from coding do you have any other kind of involvement with the organization?**
NO
### **Availability**
* **Eligible for Google Summer of Code and Outreachy?**
I am only Eligible for Google Summer of Code.
* **Do you plan to submit any other proposal apart from this one?**
No, I am only submitting this proposal.
* **Do you have any other plans this summer?**
No, I don’t have any other internship or plans for this summer. Google Summer of Code is the topmost priority for me this summer.
* **How many hours per week can you dedicate for this?**
I will dedicate a minimum of 40 hours each week for this project, I am willing to dedicate more if needed.
**Have you been accepted to GSoC before?**
No, I apply for gsoc first time.
==TimeLine
|**Timeframe**|**Start Date**|**End Date**|**Task**|
|**Community Bonding Period**|**May-17**|**June -7 **|**Getting Familiarized with app structure, Wikimedia Api, and Community** |
| SubTask 1 | | |Community Bonding|
| SubTask 2 | | |work on Bugs and enhancement of app|
| SubTask 3 | | |Discuss about project|
|**Week 1**|**June -7 **|**June -13 **| ** Add custom image selector floating action Button in contrinution activity ,Create an UI Layout to show All file of phone ** |
| SubTask 1 | | |Discuss UI with mentors |
| SubTask 2 | | | Create FAB(Floating Action Buttoon ) for custom picture selector and add it |
| SubTask 3 | | | Completed UI Layout to show All file of phone |
|**Week 2**|**June -14 -**|**June -20**| ** Add the functionalities to extract file data from the phone , Binder data with UI ** |
| SubTask 1 | | |Create models and data source classes to fetch the data using content resolvers|
| SubTask 2 | | |Create ViewModels to handle the data |
| SubTask 3 | | |Bind Data with UI |
|**Week 3**|**June -21 **|**June -27**| ** Create an UI Layout to show All photo of file when click on file,Complete UI integration with data, load the data to the UI,Unit test** |
| SubTask 1 | | | Create an UI Layout to show All photo of file when click on file|
| SubTask 2 | | | Complete UI integration with data, load the data to the UI |
| SubTask 3 | | | Unit test |
|**Week 4**|**June -28**|**July-4**| ** Improve the UI,test the functionality ,Code refactoring,Fix Bugs** |
| SubTask 1 | | |UI improvement |
| SubTask 2 | | |Code refactoring|
| SubTask 3 | | |Test the functionality|
| SubTask 4 | | |Fix Bugs|
|**Week 5**|**July -5 **|**July-11**| ** Add Commons API to check the presence of a file ** |
|SubTask 1| | |Test the API call using PostMan|
| SubTask 2 | | |Create class to handle Commons API to check the presence of a file |
| SubTask 3 | | |Blog Post|
|**Week 6**|**July -12 **|**July -18**| **First Evaluation,Complete Unit test for UI ,Bug fixes. ** |
| SubTask 1 | | |** First Evaluation** |
| SubTask 2 | | |fix Bug|
| SubTask 3 | | |Complete Unit tests for UI |
|**Week 7**|**July -19 **|**july -25**| ** Load the API data to UI ** |
| SubTask 1 | | | Make the required changes to the UI, models to integrate the API data with UI |
| SubTask 2 | | |Load the API data to the UI and show the images to indicate uploaded to the commons |
|**Week 8**|**July -26 **|**August -1**| ** Implement caching the api data with images. ** |
| SubTask 1 | | | Create an viewModel which handle caching |
| SubTask 2 | | | Use the Univerasal-image-Loader library for caching of image|
|**Week 9**|**August -2**|**August -8**| ** Improve the performance, complete test for API, caching.** |
| SubTask 1 | | | Make the required changes to the UI, models to integrate the API data with UI. |
| SubTask 2 | | | Load the API data to the UI and show the images to indicate uploaded to the commons.|
| SubTask 3 | | | Load the API data to the UI and show the images to indicate uploaded to the commons.|
| SubTask 4 | | |complete test for API|
|**Week 10**|**August-9 **|**August -15**| ** Integrate the custom image selector activity with Commons app upload activity to process Uploading of images ** |
| SubTask 1 | | | Integrate the Custom image selector activity with Commons app Upload activity |
| SubTask 2 | | | Compleleted the project |
|SubTask 3 | | | Test the app |
|**Week 11**|**August-16 **|**August -22**| ** Final Submission ** |
| SubTask 1| | | **Final Evalution** |
| SubTask 2| | | Completed remaining Unit Test |
| SubTask 2| | |Major bugfixes, Ui improvement |
|SubTask 3| | | Overall Blog post|
===Contributions to Wikimedia commons
**PULL request create: 19
Meged Pull Reques :18**
[[ https://github.com/commons-app/apps-android-commons/commits?author=Prince-kushwaha| Merged Pull Requst ]]
[[ https://github.com/commons-app/apps-android-commons/pulls/@me| Not Merge Pull Request]]
**Pull Request**
|--- |--- |--- |--- |--- |
|**PR Number**|**Title**|**Status**|** Issue Number **|
|[[ https://github.com/commons-app/apps-android-commons/pull/4325| #4325]]| fix:Setting Language list is not an language list which is supported by Commons for caption and description|Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4321| #4321]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4306| #4306]]| fix:App should respect device font-size |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4299| #4299]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4274| #4274]]|Explore Search: No title bar for item, non-existent menu for item, wrongly-worded menu for category|Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4271| #4271]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4176| #4176]]|click on skip button in Peer Review after orientation change then app is crashed|Merged| [[ https://github.com/commons-app/apps-android-commons/issues/4143|#4143]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4233| #4233]] | app crash in CategoryDetailsActivity when click on any media (image or video)| Merged| [[ https://github.com/commons-app/apps-android-commons/issues/#4196| #4196]] |
|[[ https://github.com/commons-app/apps-android-commons/pull/4267| #4267]]|when app theme is Dark then CategoryDetailsActivity ,SearchActivity ,WikidataItemDetalActivity, Profile Activity Toolbar color is not change to dark |Merged| [[ https://github.com/commons-app/apps-android-commons/issues/4252| #4196]] |
| [[ https://github.com/commons-app/apps-android-commons/pull/4188| #4188]] | fix-Incomplete Nearby List shown in Landscape mode|Merged|[[ https://github.com/commons-app/apps-android-commons/issues/#4196| ##4196]]
|[[ https://github.com/commons-app/apps-android-commons/pull/4202| #4202]] | fixes-Failed to send thanks" notification, but thank actually sent successfully|Merged|[[ https://github.com/commons-app/apps-android-commons/issues/| #3559]] |
| [[ https://github.com/commons-app/apps-android-commons/pull/4204| #4204]] |Upload count does not get updated right away post successful upload |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/3559| #3559]]|
| [[ https://github.com/commons-app/apps-android-commons/pull/4104| #4104]] |Repull request of fixes #4081 App is crash when Backbutton is pressed |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4081| #4081]]|
| [[ https://github.com/commons-app/apps-android-commons/pull/4139| #4139]]| Crash when tapping on the nearbyNotification in Contributions activity|Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4086| #4086]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4102| #4102]]| fixes In nearby tab when back button is pressed nothing happen(#4096) |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4096| #4096]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4103| #4103]]| fix bug #4101 In MediaDetailfragment Editext Dailog is Blank in Dark mode|Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4101| #4101]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4074| #4074]]| fixes After click on the image app is crashed (#4072) |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4042| #4042]]|
| [[ https://github.com/commons-app/apps-android-commons/pull/4028| #4028]]| fixes Progress Bar Visibility change with Orientation Change and login process terminated |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4086| #4086]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4041| #4041]]| fixes #4026 (words cut off ) |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/4026| #4026]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/3982| #3982]]|Losing filled data when screen rotate (#3973) |Merged|[[ https://github.com/commons-app/apps-android-commons/issues/3973| #3973]]|
|[[ https://github.com/commons-app/apps-android-commons/pull/4100| #4100]]| fixes #2296 After canceling a sharing, application goes back to the search menu |Pending|[[ https://github.com/commons-app/apps-android-commons/issues/2296| #2296]]|
**Issues**
**Create Issue :19
CLosed Issue :18**
[[ https://github.com/commons-app/apps-android-commons/issues?q=is%3Aclose+assignee%3A%40me+|Close Issue ]]
[[ https://github.com/commons-app/apps-android-commons/issues/created_by/@me| Open Issue ]]
|--- |--- |--- |--- |--- |
|**Isuues Number**|**Title**|**Status**|
|[[ https://github.com/commons-app/apps-android-commons/issues/4307| #4307]]| Search widget to choose description language| open |
| [[ https://github.com/commons-app/apps-android-commons/issues/4278| #4278]]| Media details categories editor: Category not actually added| Open |
| [[ https://github.com/commons-app/apps-android-commons/issues/4321| #4321]]|Setting Language list is not an language list which is supported by Commons for caption and description | closed |
|[[ https://github.com/commons-app/apps-android-commons/issues/4252| #4452]]| when app theme is Dark then CategoryDetailsActivity ,SearchActivity ,WikidataItemDetalActivity, Profile Activity Toolbar color is not change to dark| close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4253| #4253]] |App is Crash when click on Bookmark Bottom navigation bar icon or open Bookmark At Android API Level 25 |close|
|[[ https://github.com/commons-app/apps-android-commons/issues/4196| #4196]] |App crash in CategoryDetailsActivity when click on any media | close|
|[[ https://github.com/commons-app/apps-android-commons/issues/4143| #4143]] |click on skip button in Peer Review after orientation change then app is crashed | close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4140| #4140]]| Toolbar with share button is missing in Profile Activity| Open|
| [[ https://github.com/commons-app/apps-android-commons/issues/4101| #4101]]| In MediaDetailfragment Editext Dailog is Blank in Dark mode|close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4096| #4096]]| In nearby tab when back button is pressed nothing happen| close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4086| #4086]]|crashwhen tapping on the nearbyNotification in Contributions activity| close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4081| #4081]]| App is crash when Backbutton is pressed| close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4079| #4079]]| menu item are not visible| close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4072| #4072]]| Crash after opening media from the explore search| close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4063| #4063]]| After click on backButton, application goes back to the exploreActivity| close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4031| #4031]]| Textview(No Copyright violation) not fit in Peer Review Activity|close|
| [[ https://github.com/commons-app/apps-android-commons/issues/4001| #4001]]| Progress Bar Visibility change with Orientation Change and login process terminated | close|
| [[ https://github.com/commons-app/apps-android-commons/issues/3973| #3973]]| Losing filled data when screen rotate| close|
**Contribtution to Anki-Android**
|**PR Number**|**Title**|**Status**|Issue Number |
|[[ https://github.com/ankidroid/Anki-Android/pull/8439| #8439]]|fix :Deck ordering differs from Anki Desktop | Pending Merge |[[ https://github.com/ankidroid/Anki-Android/issues/8397| #8397]] |
|[[ https://github.com/ankidroid/Anki-Android/pull/8395| #8439]]|fix: ACRA Crash Dialog - Can't enter additional information| Merged|[[ https://github.com/ankidroid/Anki-Android/issues/8380| #8380]]|
|[[ https://github.com/oppia/oppia-android/pull/2584| #2584]]|fix: "Fix #2580: Reformatted the files| Merged | [[ https://github.com/oppia/oppia-android/issues/2580| 2580]]