Skip to content

Commit

Permalink
Merge pull request #161 from UdacityAndroidDevScholarship/development
Browse files Browse the repository at this point in the history
Development merge
  • Loading branch information
drulabs authored May 14, 2018
2 parents 0354a85 + 6ba380d commit 59639ad
Show file tree
Hide file tree
Showing 8 changed files with 129 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@
import android.view.ViewTreeObserver;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.airbnb.lottie.LottieAnimationView;
import com.bumptech.glide.Glide;
import com.developervishalsehgal.udacityscholarsapp.R;
import com.developervishalsehgal.udacityscholarsapp.data.models.Quiz;
import com.developervishalsehgal.udacityscholarsapp.settings.SettingsActivity;
Expand All @@ -44,6 +46,7 @@
import com.developervishalsehgal.udacityscholarsapp.ui.quizdetails.QuizDetailsActivity;
import com.developervishalsehgal.udacityscholarsapp.ui.quizdetails.QuizDetailsContract;
import com.developervishalsehgal.udacityscholarsapp.utils.AppConstants;
import com.developervishalsehgal.udacityscholarsapp.utils.Connectivity;

import java.util.List;

Expand All @@ -70,13 +73,10 @@ public class HomeActivity extends AppCompatActivity implements HomeContract.View
private ProgressBar splashScreenProgress;

private ValueAnimator splashProgressLoading;
private Animation recyclerViewLoading;

// UI Elements
private DrawerLayout mDrawerLayout;
private RecyclerView mQuizRecyclerView;
//Reference of the quiz filter list layout
private RadioGroup mHomeQuizListFilterRadioGroup;
//////////////
private TextView mTvQuizCount;
private LottieAnimationView progressBar;
Expand All @@ -89,6 +89,11 @@ public class HomeActivity extends AppCompatActivity implements HomeContract.View
boolean mIsFilterMenuOpen = false;
private View mDimBackground;

private TextView mEmptyStateTextView;

private ImageView mImgUserPic;
private TextView mTvUserName;
private TextView mTvSlackHandle;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
Expand All @@ -100,7 +105,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {

initializeUI();

mPresenter.start(getIntent().getExtras());
if (Connectivity.isNetworkAvailable(this)) {
mPresenter.start(getIntent().getExtras());
} else {
noInternetMessage();
}

displaySplashScreen();

Expand All @@ -127,9 +136,9 @@ private void initializeUI() {

initQuizFilter();
mDrawerLayout = findViewById(R.id.drawer_layout);
NavigationView mNavigationView = findViewById(R.id.nav_view);
mNavigationView.setItemIconTintList(null);
mNavigationView.setNavigationItemSelectedListener(this);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setItemIconTintList(null);
navigationView.setNavigationItemSelectedListener(this);

mDimBackground = findViewById(R.id.scrim_bg_quiz_list);

Expand All @@ -140,6 +149,15 @@ private void initializeUI() {
homeLayout = findViewById(R.id.homeactivitycoordinator);

progressBar = findViewById(R.id.home_screen_pb);

View navHeaderView = navigationView.getHeaderView(0);

mImgUserPic = navHeaderView.findViewById(R.id.userimage_nav_drawer);
mTvSlackHandle = navHeaderView.findViewById(R.id.slack_name_nav_drawer);
mTvUserName = navHeaderView.findViewById(R.id.username_nav_drawer);

//initializing empty view
mEmptyStateTextView = findViewById(R.id.empty_view);
}

// @Override
Expand All @@ -148,6 +166,14 @@ private void initializeUI() {
// return super.onCreateOptionsMenu(menu);
// }


private void noInternetMessage() {
mQuizRecyclerView.setVisibility(View.GONE);
mEmptyStateTextView.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
Expand Down Expand Up @@ -176,6 +202,8 @@ public boolean onOptionsItemSelected(MenuItem item) {

@Override
public void loadQuizzes(List<Quiz> quizzes) {
mQuizRecyclerView.setVisibility(View.VISIBLE);
mEmptyStateTextView.setVisibility(View.GONE);
mQuizAdapter.loadQuizzes(quizzes);
mTvQuizCount.setText(String.valueOf(quizzes.size()));
}
Expand All @@ -185,6 +213,27 @@ public void onQuizLoadError() {
// TODO: show an alert or toast saying "quiz can't be loaded at the moment, check network connection and try again"
}

@Override
public void loadUserImageInDrawer(String imageUrl) {
if (imageUrl != null) {
Glide.with(this).load(imageUrl).into(mImgUserPic);
}
}

@Override
public void loadUserNameInDrawer(String username) {
if (username != null) {
mTvUserName.setText(username);
}
}

@Override
public void loadSlackHandleInDrawer(String slackHandle) {
if (slackHandle != null) {
mTvSlackHandle.setText(slackHandle);
}
}

@Override
public void navigateToQuizDesc(Quiz quiz) {
// TODO: Navigate to QuizDescription Activity, use the quiz object above to extract quiz
Expand Down Expand Up @@ -250,7 +299,7 @@ public void showLoading() {

@Override
public void hideLoading() {
recyclerViewLoading = AnimationUtils.loadAnimation(this, R.anim.anim_nothing);
Animation recyclerViewLoading = AnimationUtils.loadAnimation(this, R.anim.anim_nothing);
mQuizRecyclerView.startAnimation(recyclerViewLoading);
progressBar.setVisibility(View.GONE);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ interface View extends BaseView<Presenter> {

void onQuizLoadError();

void loadUserImageInDrawer(String imageUrl);

void loadUserNameInDrawer(String username);

void loadSlackHandleInDrawer(String slackHandle);

void navigateToQuizDesc(Quiz quiz);

void navigateToScoreboard();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ public void onError() {
mView.hideLoading();
}
});

// Load user image, name and slack handle in navigation drawer
mView.loadUserImageInDrawer(mDataHandler.getUserPic());
mView.loadSlackHandleInDrawer(mDataHandler.getSlackHandle());
mView.loadUserNameInDrawer(mDataHandler.getUserName());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.developervishalsehgal.udacityscholarsapp.ui.quizattempt;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
Expand All @@ -11,6 +12,7 @@
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.FrameLayout;
Expand Down Expand Up @@ -135,6 +137,7 @@ public void showNextButton() {
@Override
public void loadQuestion(Question question) {
this.mCurrentQuestion = question;
hideKeyboard();
populateQuestionDetails(mCurrentQuestion, null);
}

Expand Down Expand Up @@ -383,4 +386,18 @@ private void showQuizQuizConfirmation() {
.create()
.show();
}

//method to hide input keyboard on next/previous question button click
private void hideKeyboard() {
// Check if no view has focus:
View view = this.getCurrentFocus();
try {
if (view != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
} catch (NullPointerException npe) {
npe.printStackTrace();
}
}
}
38 changes: 26 additions & 12 deletions app/src/main/res/layout/activity_home.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,22 +82,36 @@
android:layout_marginTop="@dimen/difficulty_view_margin"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_quizzes"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/difficulty_view_margin"
android:background="@color/black"
android:focusableInTouchMode="true"
android:textAlignment="center"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_quizzes"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/difficulty_view_margin"
android:background="@color/black"
android:focusableInTouchMode="true"
android:textAlignment="center"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:itemCount="4"
tools:listitem="@layout/list_item_quizzes" />
</android.support.v4.widget.SwipeRefreshLayout>


<!-- Empty view is only visible when the list has no items. -->
<TextView
android:id="@+id/empty_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:text="@string/no_internet_connection"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:itemCount="4"
tools:listitem="@layout/list_item_quizzes" />
</android.support.v4.widget.SwipeRefreshLayout>
android:textAppearance="?android:textAppearanceMedium"/>

<com.airbnb.lottie.LottieAnimationView
android:id="@+id/home_screen_pb"
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/layout/content_quiz_discussion.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
android:paddingEnd="@dimen/chat_box_padding_end"
android:paddingStart="@dimen/chat_box_padding"
android:paddingTop="@dimen/chat_box_padding"
android:textSize="@dimen/text_small"
android:hint="@string/type_comment_hint"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
Expand Down
20 changes: 11 additions & 9 deletions app/src/main/res/layout/nav_header_navigation_drawer.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/nav_header"
Expand All @@ -14,7 +15,7 @@
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingStart="@dimen/activity_horizontal_margin"
android:paddingTop="24dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark">

Expand All @@ -24,17 +25,18 @@
android:layout_height="@dimen/img_btn"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:background="@color/transparent"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_edit" />

<ImageView
<com.mikhaellopez.circularimageview.CircularImageView
android:id="@+id/userimage_nav_drawer"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_width="@dimen/box_medium"
android:layout_height="@dimen/box_medium"
android:layout_above="@id/username_nav_drawer"
android:contentDescription="@string/app_name"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:scaleType="fitCenter"
android:src="@drawable/profile" />

<TextView
Expand All @@ -43,15 +45,15 @@
android:layout_height="wrap_content"
android:layout_above="@id/slack_name_nav_drawer"
android:paddingTop="10dp"
android:text="Vishal Sehgal"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textStyle="bold" />
android:textStyle="bold"
tools:text="Vishal Sehgal" />

<TextView
android:id="@+id/slack_name_nav_drawer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="\@sehgalvishal31" />
tools:text="\@sehgalvishal31" />
</RelativeLayout>
</RelativeLayout>
7 changes: 5 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
<string name="sigin_text_almost_there">Almost there, Sign In to continue</string>


<!-- Error message when there is no internet connectivity [CHAR LIMIT=NONE] -->
<string name="no_internet_connection">No internet connection.</string>

<string name="details_page_email">[email protected]</string>
<string name="details_page_name">Name</string>
<string name="details_page_slack_handle">Slack Handle</string>
Expand Down Expand Up @@ -61,7 +64,7 @@
<string name="unable_to_login">Unable to login with this account</string>
<string name="text_proceed">Proceed >> </string>
<string name="error_uploading_picture">Error while uploading profile picture. Please try again later.</string>
<string name="profile_saved_successfully">Profile saved successfully</string>
<string name="profile_saved_successfully">Logged in successfully</string>


<!-- NotificationActivity Helper Strings -->
Expand Down Expand Up @@ -186,7 +189,7 @@
<string name="slack_handle_format_missing">Start with \@</string>
<string name="select_your_track">Select Your Track</string>
<string name="user_image_empty">Select a profile photo</string>

<string name="type_comment_hint">Type message here</string>


</resources>

0 comments on commit 59639ad

Please sign in to comment.