Skip to content

Commit e40e42c

Browse files
committed
Release Version 1.08
- Added about screen - Redesigned navigation drawer layout - Added user preferences - Update navigation drawer based on whether user is signed in via Google or otherwise - App automatically signs out if Google Account is signed out. - Added more Google Play Achievements
1 parent f895e09 commit e40e42c

File tree

17 files changed

+572
-473
lines changed

17 files changed

+572
-473
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,4 @@ freeline.py
6060
freeline/
6161
freeline_project_description.json
6262
.DS_Store
63+
app/src/main/AndroidManifest.xml

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ Android drawing application for annotating the backbone of worms.
88

99
## Releases
1010

11+
### 1.08 (2018-04-23)
12+
- Added about screen
13+
- Redesigned navigation drawer layout
14+
- Added user preferences
15+
- Update navigation drawer based on whether user is signed in via Google or otherwise
16+
- App automatically signs out if Google Account is signed out.
17+
- Added more Google Play Achievements
18+
1119
### 1.07 (2018-04-14)
1220
- Added user scores in FireBase
1321
- More robust image loading from FireBase

app/.idea/assetWizardSettings.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 Bytes
Binary file not shown.

app/.idea/workspace.xml

Lines changed: 310 additions & 360 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ android {
1010
minSdkVersion 21
1111
targetSdkVersion 26
1212
versionCode 1
13-
versionName "1.07"
13+
versionName "1.08"
1414
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1515
}
1616
buildTypes {

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
android:theme="@style/AppTheme">
5757
<intent-filter>
5858
<action android:name="android.intent.action.MAIN" />
59-
6059
<category android:name="android.intent.category.LAUNCHER" />
6160
</intent-filter>
6261
</activity>
@@ -84,6 +83,7 @@
8483
</activity>
8584
<activity
8685
android:name=".AboutActivity"
86+
android:label="@string/title_activity_about"
8787
android:screenOrientation="portrait"
8888
android:theme="@style/AppTheme.Settings"/>
8989
</application>

app/src/main/java/com/example/caden/drawingtest/AboutActivity.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,16 @@ protected void onCreate(Bundle savedInstanceState) {
2020
}
2121

2222
TextView tvChangeLog = findViewById(R.id.tv_change_log);
23-
tvChangeLog.setText(Html.fromHtml(getString(R.string.about_screen_text)));
23+
tvChangeLog.setText(Html.fromHtml(getString(R.string.change_log_text)));
2424
tvChangeLog.setMovementMethod(LinkMovementMethod.getInstance());
25+
26+
TextView tvAboutApp = findViewById(R.id.tv_about_app);
27+
tvAboutApp.setText(Html.fromHtml(getString(R.string.about_app_text)));
28+
tvAboutApp.setMovementMethod(LinkMovementMethod.getInstance());
29+
30+
TextView tvPrivacyPolicy = findViewById(R.id.tv_privacy_policy);
31+
tvPrivacyPolicy.setText(Html.fromHtml(getString(R.string.privacy_policy_text)));
32+
tvPrivacyPolicy.setMovementMethod(LinkMovementMethod.getInstance());
2533
}
2634

2735
@Override

app/src/main/java/com/example/caden/drawingtest/DrawingActivity.java

Lines changed: 59 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import android.support.v7.app.AppCompatActivity;
1919
import android.support.v7.widget.Toolbar;
2020
import android.transition.TransitionManager;
21+
import android.util.Log;
2122
import android.util.TypedValue;
2223
import android.view.Menu;
2324
import android.view.MenuItem;
@@ -35,9 +36,13 @@
3536
import com.google.android.gms.games.AchievementsClient;
3637
import com.google.android.gms.games.Games;
3738
import com.google.android.gms.games.LeaderboardsClient;
39+
import com.google.android.gms.tasks.OnCompleteListener;
40+
import com.google.android.gms.tasks.Task;
3841
import com.google.firebase.analytics.FirebaseAnalytics;
3942
import com.google.firebase.auth.FirebaseAuth;
4043
import com.google.firebase.auth.FirebaseUser;
44+
import com.google.firebase.auth.UserInfo;
45+
import com.google.firebase.auth.UserProfileChangeRequest;
4146
import com.google.firebase.database.DataSnapshot;
4247
import com.google.firebase.database.DatabaseError;
4348
import com.google.firebase.database.DatabaseReference;
@@ -68,6 +73,7 @@ public class DrawingActivity extends AppCompatActivity
6873
private static final int PIXEL_HEIGHT = 280;
6974
private static final int RC_ACHIEVEMENT_UI = 9003;
7075
private static final int RC_LEADERBOARD_UI = 9004;
76+
private static final int RC_SETTING_UI = 9005;
7177

7278
/* Variables */
7379
String currBatchName;
@@ -101,6 +107,7 @@ public class DrawingActivity extends AppCompatActivity
101107
ProgressBar barSend;
102108
FloatingActionButton fabSend;
103109
TextView navUserEmail;
110+
TextView navUserName;
104111
TextView tvImageName;
105112
TextView tvUserScore;
106113

@@ -114,6 +121,8 @@ public class DrawingActivity extends AppCompatActivity
114121
NavigationView navView;
115122
View navHeaderLayout;
116123

124+
boolean isGoogleSignIn = false;
125+
117126

118127
@Override
119128
protected void onCreate(Bundle savedInstanceState) {
@@ -138,6 +147,12 @@ protected void onCreate(Bundle savedInstanceState) {
138147
userUID = mUser.getUid();
139148
userEmail = mUser.getEmail();
140149

150+
for (UserInfo u : mUser.getProviderData()) {
151+
if (u.getProviderId().equals("google.com")) {
152+
isGoogleSignIn = true;
153+
}
154+
}
155+
141156
// get drawing view from XML (where the finger writes the number)
142157
drawView = findViewById(R.id.draw);
143158

@@ -160,10 +175,23 @@ protected void onCreate(Bundle savedInstanceState) {
160175
navUserEmail.setText(userEmail);
161176
tvImageName = findViewById(R.id.tv_img_name);
162177

163-
TextView navUserName = navHeaderLayout.findViewById(R.id.nav_drawer_name);
178+
navUserName = navHeaderLayout.findViewById(R.id.nav_drawer_name);
164179
String userName = mUser.getDisplayName();
165-
if (!(userName == null || userName.equals(""))) {
166-
navUserName.setText(userName);
180+
if (userName == null || userName.equals("")) {
181+
/* New users gets the default name */
182+
userName = getString(R.string.default_user_name);
183+
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
184+
.setDisplayName(userName)
185+
.build();
186+
mUser.updateProfile(profileUpdates);
187+
}
188+
navUserName.setText(userName);
189+
190+
if (!isGoogleSignIn) {
191+
Menu menu = navView.getMenu();
192+
menu.findItem(R.id.nav_achievements).setEnabled(false);
193+
menu.findItem(R.id.nav_leaderboard).setEnabled(false);
194+
menu.findItem(R.id.nav_gplay_setting).setEnabled(false);
167195
}
168196

169197
// FIXME get user profile photo
@@ -203,7 +231,9 @@ protected void onCreate(Bundle savedInstanceState) {
203231
/* Google Play Game */
204232
gAcct = GoogleSignIn.getLastSignedInAccount(this);
205233
if (gAcct != null) {
206-
// Games.getGamesClient(this, gAcct).setViewForPopups(clDrawMain);
234+
Games.getGamesClient(this, gAcct).setViewForPopups(clDrawMain);
235+
}
236+
if (isGoogleSignIn) {
207237
mAchClient = Games.getAchievementsClient(this, gAcct);
208238
mLeadClient = Games.getLeaderboardsClient(this, gAcct);
209239
}
@@ -212,10 +242,12 @@ protected void onCreate(Bundle savedInstanceState) {
212242
@Override
213243
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
214244
int id = item.getItemId();
215-
if (id == R.id.nav_achievements) {
245+
if (id == R.id.nav_achievements && isGoogleSignIn) {
216246
showAchievements();
217-
} else if (id == R.id.nav_leaderboard) {
247+
} else if (id == R.id.nav_leaderboard && isGoogleSignIn) {
218248
showLeaderBoard();
249+
} else if (id == R.id.nav_gplay_setting && isGoogleSignIn) {
250+
showGPlaySettings();
219251
} else if (id == R.id.nav_logout) {
220252
logOut();
221253
} else if (id == R.id.nav_settings) {
@@ -229,18 +261,20 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
229261
return true;
230262
}
231263

264+
232265
private void showAchievements() {
233-
if (gAcct != null) {
234-
mAchClient.getAchievementsIntent()
235-
.addOnSuccessListener((intent -> startActivityForResult(intent, RC_ACHIEVEMENT_UI)));
236-
}
266+
mAchClient.getAchievementsIntent()
267+
.addOnSuccessListener((intent -> startActivityForResult(intent, RC_ACHIEVEMENT_UI)));
237268
}
238269

239270
private void showLeaderBoard() {
240-
if (gAcct != null) {
241-
mLeadClient.getLeaderboardIntent(getString(R.string.leaderboard_wurm_scores_id))
242-
.addOnSuccessListener((intent -> startActivityForResult(intent, RC_LEADERBOARD_UI)));
243-
}
271+
mLeadClient.getLeaderboardIntent(getString(R.string.leaderboard_wurm_scores_id))
272+
.addOnSuccessListener((intent -> startActivityForResult(intent, RC_LEADERBOARD_UI)));
273+
}
274+
275+
private void showGPlaySettings() {
276+
Games.getGamesClient(this, gAcct).getSettingsIntent()
277+
.addOnSuccessListener((intent -> startActivityForResult(intent, RC_SETTING_UI)));
244278
}
245279

246280
private void showSettings() {
@@ -277,6 +311,17 @@ private void feedbackScreen() {
277311
// say he presses home button and then comes back to app, onResume() is called.
278312
protected void onResume() {
279313
drawView.onResume();
314+
if (GoogleSignIn.getLastSignedInAccount(this) == null) {
315+
FirebaseAuth.getInstance().signOut();
316+
Intent i = new Intent(this, LoginActivity.class);
317+
startActivity(i);
318+
}
319+
mUser.reload().addOnCompleteListener(task -> {
320+
if (task.isSuccessful()) {
321+
navUserName.setText(mUser.getDisplayName());
322+
navUserEmail.setText(mUser.getEmail());
323+
}
324+
});
280325
super.onResume();
281326
}
282327

app/src/main/java/com/example/caden/drawingtest/LoginActivity.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void onStart() {
7474
super.onStart();
7575
FirebaseUser currentUser = mAuth.getCurrentUser();
7676
if (currentUser != null) {
77-
updateUI();
77+
updateUI(false);
7878
}
7979
}
8080

@@ -105,9 +105,18 @@ public void register(View v){
105105
startActivity(i);
106106
}
107107

108-
public void updateUI() {
109-
Intent i = new Intent(this, DrawingActivity.class);
110-
startActivity(i);
108+
public void updateUI(boolean delay) {
109+
if (delay) {
110+
/* Slight delay to allow for Google Play Games popup to show */
111+
new android.os.Handler().postDelayed(() -> {
112+
Intent i = new Intent(this, DrawingActivity.class);
113+
startActivity(i);
114+
},
115+
300);
116+
} else {
117+
Intent i = new Intent(this, DrawingActivity.class);
118+
startActivity(i);
119+
}
111120
}
112121

113122
@Override
@@ -142,7 +151,7 @@ private void fireBaseAuthWithGoogle(GoogleSignInAccount acct) {
142151
.addOnCompleteListener(this, task -> {
143152
progressbar.setVisibility(View.INVISIBLE);
144153
if (task.isSuccessful()) {
145-
updateUI();
154+
updateUI(true);
146155
} else {
147156
String msg = task.getException() == null ?
148157
"Something went wrong, please try again!" :
@@ -190,7 +199,7 @@ public void login(View v) {
190199
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
191200
if (user != null) {
192201
if (user.isEmailVerified()) {
193-
updateUI();
202+
updateUI(false);
194203
} else {
195204
new AlertDialog.Builder(this)
196205
.setMessage("User is not verified, do you want to verify now?")

0 commit comments

Comments
 (0)