-
Notifications
You must be signed in to change notification settings - Fork 6
/
SettingsManager.java
113 lines (97 loc) · 3.92 KB
/
SettingsManager.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.dihanov.musiq.util;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.dihanov.musiq.R;
import com.dihanov.musiq.data.repository.user.UserSettingsRepository;
import com.dihanov.musiq.service.MediaControllerListenerService;
import com.dihanov.musiq.ui.login.Login;
import com.dihanov.musiq.ui.settings.Settings;
import com.dihanov.musiq.ui.settings.profile.Profile;
import javax.inject.Inject;
/**
* Created by dimitar.dihanov on 2/15/2018.
*/
public class SettingsManager {
private Activity activity;
private UserSettingsRepository userSettingsRepository;
@Inject
public SettingsManager(UserSettingsRepository userSettingsRepository) {
this.userSettingsRepository = userSettingsRepository;
}
public void setActivity(Activity activity) {
this.activity = activity;
}
private void openAbout() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
View layout = activity.getLayoutInflater().inflate(R.layout.about_layout, null, false);
TextView aboutMessage = layout.findViewById(R.id.about_message);
SpannableString s =
new SpannableString(String.format(activity.getString(R.string.about_message), Constants.APP_VESRION));
Linkify.addLinks(s, Linkify.WEB_URLS);
aboutMessage.setMovementMethod(LinkMovementMethod.getInstance());
aboutMessage.setText(s);
alertDialogBuilder.setTitle(R.string.about);
if (!activity.isFinishing()) {
final AlertDialog alertDialog = alertDialogBuilder
.setView(layout)
.setCancelable(true)
.setIcon(android.R.drawable.ic_dialog_info)
.setPositiveButton(R.string.dialog_action_dismiss, null)
.create();
alertDialog.show();
}
}
private void openSettings() {
activity.startActivity(new Intent(activity, Settings.class));
}
private void logOut() {
userSettingsRepository.clearLoginData();
Intent intent = new Intent(activity, Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.stopService(new Intent(activity, MediaControllerListenerService.class));
activity.startActivity(intent);
activity.finish();
}
public void manageSettings(MenuItem item) {
int id = item.getItemId();
switch (id) {
case (R.id.nav_profile):
openProfile();
break;
case (R.id.nav_settings):
openSettings();
break;
case (R.id.nav_logout):
logOut();
break;
case (R.id.nav_about):
openAbout();
break;
default:
break;
}
}
private void openProfile() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
String username = userSettingsRepository.getUsername();
if (username.isEmpty() || username == "" && !activity.isFinishing()) {
alertDialogBuilder.setCancelable(true);
alertDialogBuilder.setTitle(activity.getString(R.string.note))
.setMessage(activity.getString(R.string.log_in_to_use_feature))
.setNeutralButton(activity.getString(R.string.dialog_action_dismiss), (dialog, which) -> {
dialog.dismiss();
});
final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
return;
}
activity.startActivity(new Intent(activity, Profile.class));
}
}