Feedback module (#1742)

*  Implemented Statistics

*  Basic Structure Implemented

*  Layout made screen independent and menu inflated

*  Share Screenshot using cache

*  Improved the Image Bound and added strings

*  Improved the quality of Pr

*  Wired to navigation drawer

*  Changed the bounds of the image

*  Added Info icon

* Removed the unecessary functionality

*  Updated JavaDocs and fetch the username

*  Fetch JsonObject from the api using JavaRx and OkHttp

* Added JavaDocs and improved quality

* fixed strings file

*  Improved the quality of pr

*  Render thanks , images used in articles on screen

*  fetch and rendered the upload count

*  FeaturedImages statistics rendered and Javadocs added

*  added ProgressBar

*  Added Class for calculating level

*  added level info and returned level info

*  level up info rendered on achievement activity

*  Inflated Level Number

*  Added the structure for badge

*  Added LevelUpInfo Programmetically on Drawable

*  aligned the text

*  changed the text

*  Implemented the structure for changing colour of drawable

*  Added functionality to change colours of badge during runtime

*  Added custom alert for share option

*  Improved the UI of screen

*  Added the alertDialog for info button

*  Improved the quality of PR

*  Added Builder model

*  Added Enum Model and increased levels to 15

* removed redundant class

*  Changed strings and added subtext

* Feedback Module: Add reverts rate parameter (#1649)

* Fetched Revert Count

* Refactored Achievements class and display the fetched results

* Refactored the levelController to include revert as parameter

*  Fixed error

*  Fixed bug

*  Added information for parameters and improved code quality

*  Javadocs added

*  Added null check and javadocs

*  Removed extra spaces
This commit is contained in:
Tanvi Dadu 2018-07-26 13:12:51 +05:30 committed by Vivek Maskara
parent 86878fb62d
commit e9c0aa22ea
25 changed files with 2456 additions and 17 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#00376d"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z"/>
</vector>

View file

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
</vector>

View file

@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="96"
android:viewportWidth="96" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#00AF89" android:pathData="M17.36,17.959v46.007L5.56,77.188c24.029,0 72.417,0 77.54,0c7.133,0 7.471,-7.096 7.482,-7.449V17.959H17.36zM63.443,29.27c2.354,0 4.258,1.907 4.258,4.256s-1.904,4.253 -4.258,4.253c-2.348,0 -4.256,-1.904 -4.256,-4.253S61.096,29.27 63.443,29.27zM45.82,29.27c2.348,0 4.252,1.907 4.252,4.256s-1.904,4.253 -4.252,4.253c-2.351,0 -4.258,-1.904 -4.258,-4.253S43.47,29.27 45.82,29.27zM54.631,65.881c-12.434,0 -22.515,-10.082 -22.515,-22.518c0,0 11.276,4.866 22.996,4.866c11.986,0 22.035,-4.866 22.035,-4.866C77.146,55.799 67.066,65.881 54.631,65.881z"/>
</vector>

View file

@ -0,0 +1,324 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:background="@color/layout_light_grey"
android:orientation="vertical">
<TextView
style="?android:textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:text="@string/level"
android:id="@+id/achievement_level" />
<ImageView
android:id="@+id/achievement_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_margin_vertical"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_alignParentRight="true"
app:srcCompat="@drawable/ic_info_outline_black_24dp"
android:layout_marginVertical="@dimen/activity_margin_vertical" />
<ImageView
android:id="@+id/achievement_badge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/achievement_level"
android:layout_centerHorizontal="true"
android:layout_marginVertical="@dimen/activity_margin_vertical" />
<RelativeLayout
android:id="@+id/layout_image_uploaded"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/achievement_badge"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal">
<TextView
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:id="@+id/images_upload_text_param"
android:layout_marginTop="@dimen/achievements_activity_margin_vertical"
android:text="@string/images_uploaded" />
<ImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:id="@+id/images_upload_info"
android:layout_marginTop="8dp"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_toRightOf="@+id/images_upload_text_param"
app:srcCompat="@drawable/ic_info_outline_blue_24dp"
android:layout_marginLeft="8dp" />
<com.dinuscxj.progressbar.CircleProgressBar
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_marginRight="32dp"
android:id="@+id/images_uploaded_progressbar"
android:progress="50"
app:progress_text_size="9dp"
app:progress_end_color="#8C8B98"
app:progress_start_color="#3A3381"
app:progress_stroke_width="3dp"
app:progress_text_format_pattern="573/110"
app:progress_text_color="@color/secondaryColor"
app:style="solid_line" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/layout_image_reverts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_below="@+id/layout_image_uploaded"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal">
<TextView
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:id="@+id/images_reverted_text"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:text="@string/image_reverts" />
<ImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_marginTop="8dp"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:id="@+id/images_reverted_info"
android:layout_toRightOf="@+id/images_reverted_text"
app:srcCompat="@drawable/ic_info_outline_blue_24dp"
android:layout_marginLeft="8dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/achievements_revert_limit_message"
android:textSize="10dp"
android:id="@+id/images_revert_limit_text"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_below="@+id/images_reverted_text"/>
<com.dinuscxj.progressbar.CircleProgressBar
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_marginRight="32dp"
android:progress="50"
android:id="@+id/image_reverts_progressbar"
app:progress_end_color="#8C8B98"
app:progress_start_color="#3A3381"
app:progress_text_size="9dp"
app:progress_stroke_width="3dp"
app:progress_text_format_pattern="92%%"
app:progress_text_color="@color/secondaryColor"
app:style="solid_line" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/layout_image_used_by_wiki"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_below="@+id/layout_image_reverts"
android:layout_marginBottom="@dimen/activity_margin_vertical"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal">
<TextView
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/images_used_by_wiki_text"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/achievements_activity_margin_vertical"
android:text="@string/images_used_by_wiki" />
<ImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:id="@+id/images_used_by_wiki_info"
android:layout_marginTop="8dp"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_toRightOf="@+id/images_used_by_wiki_text"
app:srcCompat="@drawable/ic_info_outline_blue_24dp"
android:layout_marginLeft="8dp" />
<com.dinuscxj.progressbar.CircleProgressBar
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_marginRight="32dp"
android:progress="50"
app:progress_text_size="9dp"
android:id="@+id/images_used_by_wiki_progressbar"
app:progress_end_color="#8C8B98"
app:progress_start_color="#3A3381"
app:progress_stroke_width="2.5dp"
app:progress_text_color="@color/secondaryColor"
app:progress_text_format_pattern="12/24"
app:style="solid_line" />
</RelativeLayout>
<ProgressBar
android:id="@+id/progressBar"
android:layout_centerVertical="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/layout_statistics"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/statistics"
style="?android:textAppearanceLarge"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_vertical" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal">
<ImageView
android:layout_width="@dimen/overflow_icon_dimen"
android:layout_height="@dimen/overflow_icon_dimen"
android:id="@+id/featured_image_icon"
app:srcCompat="@drawable/featured" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:textAppearanceMedium"
android:layout_toRightOf="@+id/featured_image_icon"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:text="@string/statistics_featured" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:textAppearanceMedium"
android:layout_alignParentRight="true"
android:layout_marginEnd="44dp"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:text="2"
android:id="@+id/image_featured"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginRight="44dp" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal">
<ImageView
android:layout_width="@dimen/overflow_icon_dimen"
android:layout_height="@dimen/overflow_icon_dimen"
app:srcCompat="@drawable/ic_thanks"
android:id="@+id/thanks_image_icon"
android:scaleType="centerCrop" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:textAppearanceMedium"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:layout_toRightOf="@+id/thanks_image_icon"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:text="@string/statistics_thanks" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:textAppearanceMedium"
android:layout_alignParentRight="true"
android:layout_marginEnd="44dp"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:text="2"
android:id="@+id/thanks_received"
android:layout_marginRight="44dp" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
@ -27,4 +28,16 @@
android:layout_centerHorizontal="true"
android:paddingBottom="@dimen/small_gap"/>
<ImageView
android:id="@+id/user_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_person_black_24dp"
android:textColor="@color/item_white_background"
android:textSize="@dimen/subheading_text_size"
android:layout_below="@+id/pictureOfTheDay"
android:layout_marginHorizontal="@dimen/activity_margin_horizontal"
android:layout_toRightOf="@+id/username"
android:paddingBottom="@dimen/small_gap"/>
</RelativeLayout>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:layout_margin="@dimen/activity_margin_horizontal"
android:layout_width="140dp"
android:layout_height="200dp"
android:id="@+id/alert_image" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/alert_text"
android:layout_marginRight="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"/>
</LinearLayout>

View file

@ -23,4 +23,10 @@
<attr name="drawableEnd" format="reference"/>
<attr name="drawableBottom" format="reference"/>
</declare-styleable>
<declare-styleable name="Badge">
<attr name="boundary" format="color"/>
<attr name="camera" format="color"/>
<attr name="centerRegion" format="color"/>
</declare-styleable>
</resources>

View file

@ -50,6 +50,7 @@
<color name="bottom_bar_light">#E0E0E0</color>
<color name="bottom_bar_dark">#424242</color>
<color name="layout_light_grey">#D6DCE0</color>
<color name="opak_middle_grey">#757575</color>
<color name="white">#FFFFFF</color>

View file

@ -4,6 +4,7 @@
<!-- Standard margin / padding for the containing activity -->
<dimen name="activity_margin_horizontal">16dp</dimen>
<dimen name="activity_margin_vertical">16dp</dimen>
<dimen name="achievements_activity_margin_vertical">8dp</dimen>
<!-- Standard margins / padding -->
<dimen name="huge_gap">48dp</dimen>

View file

@ -76,8 +76,8 @@
<item quantity="other">Starting %1$d uploads</item>
</plurals>
<plurals name="multiple_uploads_title">
<item quantity="one">%1$d upload</item>
<item quantity="other">%1$d uploads</item>
<item quantity="one">%1$d upload</item>
<item quantity="other">%1$d uploads</item>
</plurals>
<string name="categories_not_found">No categories matching %1$s found</string>
<string name="categories_skip_explanation">Add categories to make your images more discoverable on Wikimedia Commons.\nStart typing to add categories.</string>
@ -191,7 +191,7 @@
<string name="maximum_limit_alert">Unable to display more than 500</string>
<string name="set_limit">Set Recent Upload Limit</string>
<string name="login_failed_2fa_not_supported">Two factor authentication is currently not supported.</string>
<string name="logout_verification">Do you really want to logout?</string>
<string name="logout_verification">Do you really want to logout?</string>
<string name="commons_logo">Commons Logo</string>
<string name="commons_website">Commons Website</string>
<string name="commons_facebook">Commons Facebook Page</string>
@ -306,5 +306,20 @@
<string name="wallpaper_set_successfully">Wallpaper set successfully!</string>
<string name="delete_recent_searches_dialog">Are you sure you want to clear your search history?</string>
<string name="search_history_deleted">Search history deleted</string>
<string name="Achievements">Achievements</string>
<string name="statistics">STATISTICS</string>
<string name="statistics_thanks">Thanks Received</string>
<string name="statistics_featured">Featured Images</string>
<string name="level">LEVEL</string>
<string name="images_uploaded">Images Uploaded</string>
<string name="image_reverts">Images Not Reverted</string>
<string name="images_used_by_wiki">Images Used</string>
<string name="achievements_share_message">Share your achievements with your friends!</string>
<string name="achievements_info_message">Your level increases as you meet these requirements. Items in the "statistics" section do not count towards your level.</string>
<string name="achievements_revert_limit_message">minimum required: </string>
<string name="images_uploaded_explanation">The number of images you have uploaded to Commons, via any upload software</string>
<string name="images_reverted_explanation">The percentage of images you have uploaded to Commons that were not deleted</string>
<string name="images_used_explanation">The number of images you have uploaded to Commons that were used in Wikimedia articles</string>
<string name="user_not_logged_in">Login session expired, please log in again.</string>
</resources>

View file

@ -57,4 +57,34 @@
<item name="android:background">@android:color/transparent</item>
</style>
<style name="LevelOne">
<item name="boundary">#ddb4aa</item>
<item name="camera">#ae403a</item>
<item name="centerRegion">#bc6853</item>
</style>
<style name="LevelTwo">
<item name="boundary">#a8a8c0</item>
<item name="camera">#604890</item>
<item name="centerRegion">#6060a8</item>
</style>
<style name="LevelThree">
<item name="boundary">#90c0a8</item>
<item name="camera">#487878</item>
<item name="centerRegion">#48a8a8</item>
</style>
<style name="LevelFour">
<item name="boundary">#ffc078</item>
<item name="camera">#d87818</item>
<item name="centerRegion">#f09018</item>
</style>
<style name="LevelFive">
<item name="boundary">#c0a8c0</item>
<item name="camera">#784878</item>
<item name="centerRegion">#906078</item>
</style>
</resources>