diff --git a/Habitica/res/layout/activity_prefs.xml b/Habitica/res/layout/activity_prefs.xml
index c57d7a30a..4bb3134f1 100644
--- a/Habitica/res/layout/activity_prefs.xml
+++ b/Habitica/res/layout/activity_prefs.xml
@@ -15,14 +15,6 @@
-
-
-
-
+ android:layout_height="wrap_content">
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index af78b9ce0..8fd2f9673 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -15,6 +15,7 @@
Your User ID
API Token
Your API Token
+ Your QR Code
Contact me
An error happened…
Account
@@ -381,5 +382,6 @@ To start, which parts of your life do you want to improve?
habitica
habitrpg-qr-code.jpg
QR code saved at
+ Your QR Code
diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml
index 46d5b2e1b..1d50cc370 100644
--- a/Habitica/res/xml/preferences_fragment.xml
+++ b/Habitica/res/xml/preferences_fragment.xml
@@ -46,6 +46,14 @@
android:shouldDisableView="false"
android:summary="@string/SP_APIToken_summary"/>
+
+
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java
index 4ff3d8eff..f5e58d20a 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java
@@ -1,5 +1,6 @@
package com.habitrpg.android.habitica.helpers;
+import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
@@ -12,6 +13,7 @@ import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.TextView;
import android.widget.Toast;
import com.habitrpg.android.habitica.R;
@@ -37,6 +39,7 @@ public class QrCodeManager {
//@TODO: Allow users to set other content
private String content;
+ private String userId;
private Context context;
private ImageView qrCodeImageView;
@@ -65,7 +68,7 @@ public class QrCodeManager {
}
};
- public QrCodeManager(Context context, LinearLayout qrLayout) {
+ public QrCodeManager(Context context) {
this.context = context;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.context);
@@ -75,18 +78,22 @@ public class QrCodeManager {
this.fileName = this.context.getString(R.string.qr_file_name);
this.saveMessage = this.context.getString(R.string.qr_save_message);
+ this.content = userId;
+ this.userId = userId;
+ }
+
+ public void setUpView(LinearLayout qrLayout) {
this.qrCodeImageView = (ImageView) qrLayout.findViewById(R.id.QRImageView);
this.qrCodeDownloadButton = (Button) qrLayout.findViewById(R.id.QRDownloadButton);
this.avatarView = (AvatarView) qrLayout.findViewById(R.id.avatarView);
+ this.avatarView.configureView(false, false, false);
this.qrCodeWrapper = (FrameLayout) qrLayout.findViewById(R.id.qrCodeWrapper);
- this.content = userId;
-
//@TODO: Move to user helper/model
new Select()
.from(HabitRPGUser.class)
.where(Condition.column("id")
- .eq(userId))
+ .eq(userId))
.async()
.querySingle(userTransactionListener);
@@ -146,4 +153,23 @@ public class QrCodeManager {
file.mkdirs();
return file;
}
+
+ public void showDialogue() {
+ final Dialog dialog = new Dialog(context);
+ dialog.setContentView(R.layout.qr_dialogue);
+ dialog.setTitle(R.string.qr_dialogue_title);
+
+ LinearLayout qrLayout = (LinearLayout) dialog.findViewById(R.id.qrLayout);
+ this.setUpView(qrLayout);
+ Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
+
+ dialogButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dialog.dismiss();
+ }
+ });
+
+ dialog.show();
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java
index 9b61869f4..be5f001d7 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.java
@@ -91,6 +91,12 @@ public class AvatarView extends View {
isOrphan = true;
}
+ public void configureView(boolean showBackground, boolean showMount, boolean showPet) {
+ this.showBackground = showBackground;
+ this.showMount = showMount;
+ this.showPet = showPet;
+ }
+
private void init(AttributeSet attrs, int defStyle) {
// Load attributes
final TypedArray a = getContext().obtainStyledAttributes(
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.java
index 45044bd98..454bf3be4 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.java
@@ -27,9 +27,6 @@ public class PrefsActivity extends BaseActivity implements
@BindView(R.id.toolbar)
Toolbar toolbar;
- @BindView(R.id.qrLinearLayout)
- LinearLayout qrLinearLayout;
-
// TODO:
// This method should be moved to HabiticaApplication
public static HostConfig fromContext(Context ctx) {
@@ -57,14 +54,6 @@ public class PrefsActivity extends BaseActivity implements
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new PreferencesFragment())
.commit();
-
- qrLinearLayout.setVisibility(View.INVISIBLE);
- }
-
- @Override
- public void onBackPressed() {
- super.onBackPressed();
- qrLinearLayout.setVisibility(View.INVISIBLE);
}
@Override
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java
index e70b017f0..051c8de02 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java
@@ -25,6 +25,8 @@ import java.util.Map;
public class AccountDetailsFragment extends BasePreferencesFragment {
+ private QrCodeManager qrCodeManager;
+
@Override
protected void setupPreferences() {
for (Map.Entry preference : getPreferenceScreen().getSharedPreferences().getAll().entrySet()) {
@@ -34,20 +36,22 @@ public class AccountDetailsFragment extends BasePreferencesFragment {
}
}
- LinearLayout qrLinearLayout = (LinearLayout) getActivity().findViewById(R.id.qrLinearLayout);
- qrLinearLayout.setVisibility(View.VISIBLE);
-
- LinearLayout qrLayout = (LinearLayout) getActivity().findViewById(R.id.qrLayout);
- QrCodeManager qrCodeManager = new QrCodeManager(this.getContext(), qrLayout);
+ qrCodeManager = new QrCodeManager(this.getContext());
}
protected List getAccountDetailsPreferences() {
return Arrays.asList(getString(R.string.SP_username), getString(R.string.SP_email),
- getString(R.string.SP_APIToken), getString(R.string.SP_userID));
+ getString(R.string.SP_APIToken), getString(R.string.SP_userID), getString(R.string.SP_user_qr_code));
}
@Override
public boolean onPreferenceTreeClick(Preference preference) {
+
+ Log.v("keith", preference.getKey());
+ if (preference.getKey().equals(getString(R.string.SP_user_qr_code))) {
+ qrCodeManager.showDialogue();
+ }
+
ClipboardManager clipMan = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
clipMan.setPrimaryClip(ClipData.newPlainText(preference.getKey(), preference.getSummary()));
Toast.makeText(getActivity(), "Copied " + preference.getKey() + " to clipboard.", Toast.LENGTH_SHORT).show();
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java
index e2170dcb5..074bcf879 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java
@@ -117,7 +117,8 @@ public class GroupInformationFragment extends BaseFragment {
bossRageBar = DataBindingUtil.bind(view.findViewById(R.id.bossRageBar));
if (this.group == null) {
- new QrCodeManager(this.getContext(), qrLayout);
+ QrCodeManager qrCodeManager = new QrCodeManager(this.getContext());
+ qrCodeManager.setUpView(qrLayout);
}
if (user.getParty().getId() != null) {