Skip to content

Commit 13a507b

Browse files
committed
Паттерн
[+] Переписал экран с добавление или редактированием заметки с использованием паттерна MVP.
1 parent 264752a commit 13a507b

18 files changed

Lines changed: 589 additions & 1227 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,8 @@
2121
android:supportsRtl="true"
2222
android:theme="@style/Theme.Блокнот">
2323
<activity
24-
android:name=".presentation.activities.AddNoteActivity"
24+
android:name=".presentation.activities.note.view.AddNoteActivity"
2525
android:exported="false" />
26-
<activity
27-
android:name=".presentation.activities.NotepadActivity"
28-
android:exported="false">
29-
<meta-data
30-
android:name="android.app.lib_name"
31-
android:value="" />
32-
</activity>
3326
<activity
3427
android:name=".presentation.activities.main.view.MainActivity"
3528
android:exported="true"

app/src/main/java/ru/plumsoftware/notebook/manager/extra/ExtraNames.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,9 @@ public static class MainActivity {
1313
public static String isLoadAppOpenAd = "isLoadAppOpenAd";
1414
public static String LoadInterstitialAd = "LoadInterstitialAd";
1515
}
16+
17+
public static class AddNoteActivity {
18+
public static String note = "note";
19+
public static String update = "update";
20+
}
1621
}

app/src/main/java/ru/plumsoftware/notebook/presentation/activities/AddNoteActivity.java

Lines changed: 0 additions & 477 deletions
This file was deleted.

app/src/main/java/ru/plumsoftware/notebook/presentation/activities/NotepadActivity.java

Lines changed: 0 additions & 632 deletions
This file was deleted.

app/src/main/java/ru/plumsoftware/notebook/presentation/activities/main/presenter/MainPresenterImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import ru.plumsoftware.notebook.R;
3636
import ru.plumsoftware.notebook.manager.ads.AdsIds;
3737
import ru.plumsoftware.notebook.manager.extra.ExtraNames;
38-
import ru.plumsoftware.notebook.presentation.activities.AddNoteActivity;
38+
import ru.plumsoftware.notebook.presentation.activities.note.view.AddNoteActivity;
3939
import ru.plumsoftware.notebook.presentation.activities.main.view.MainView;
4040
import ru.plumsoftware.notebook.presentation.dialogs.ProgressDialog;
4141

@@ -81,7 +81,6 @@ public void openAddNoteActivity() {
8181
intent.putExtra(ExtraNames.MainActivity.isLoadAppOpenAd, false);
8282
intent.putExtra(ExtraNames.MainActivity.LoadInterstitialAd, activity.getIntent().getBooleanExtra(ExtraNames.MainActivity.LoadInterstitialAd, true));
8383
activity.startActivity(intent);
84-
activity.finish();
8584
}
8685

8786
@Override

app/src/main/java/ru/plumsoftware/notebook/presentation/activities/main/view/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class MainActivity extends AppCompatActivity implements MainView {
3333
@Override
3434
protected void onCreate(Bundle savedInstanceState) {
3535
super.onCreate(savedInstanceState);
36-
setContentView(R.layout.activity_notepad);
36+
setContentView(R.layout.activity_main);
3737

3838
// Base variables
3939
context = MainActivity.this;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package ru.plumsoftware.notebook.presentation.activities.note.model;
2+
3+
import android.app.Activity;
4+
import android.content.Context;
5+
6+
import ru.plumsoftware.data.model.ui.Note;
7+
8+
public class AddNoteModel {
9+
private Mode mode;
10+
private final Activity activity;
11+
private final Context context;
12+
private Note note;
13+
14+
public AddNoteModel(Activity activity, Context context) {
15+
this.activity = activity;
16+
this.context = context;
17+
18+
mode = Mode.New;
19+
}
20+
21+
public void setMode(Mode mode) {
22+
this.mode = mode;
23+
}
24+
25+
public Mode getMode() {
26+
return mode;
27+
}
28+
29+
public Activity getActivity() {
30+
return activity;
31+
}
32+
33+
public Context getContext() {
34+
return context;
35+
}
36+
37+
public void setNote(Note note) {
38+
this.note = note;
39+
}
40+
41+
public Note getNote() {
42+
return note;
43+
}
44+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package ru.plumsoftware.notebook.presentation.activities.note.model;
2+
3+
public enum Mode {
4+
New,
5+
Edit
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ru.plumsoftware.notebook.presentation.activities.note.presenter;
2+
3+
public interface AddNotePresenter {
4+
void initNote();
5+
void initMobileSdk();
6+
void putNote(String name, String text, int or, int c, long time, boolean isNotify);
7+
}
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
package ru.plumsoftware.notebook.presentation.activities.note.presenter;
2+
3+
import android.app.Activity;
4+
import android.content.ContentValues;
5+
import android.content.Context;
6+
import android.database.sqlite.SQLiteDatabase;
7+
8+
import com.yandex.mobile.ads.common.MobileAds;
9+
10+
import java.text.SimpleDateFormat;
11+
import java.util.Date;
12+
import java.util.Locale;
13+
14+
import ru.plumsoftware.data.database.SQLiteDatabaseManager;
15+
import ru.plumsoftware.data.model.database.DatabaseConstants;
16+
import ru.plumsoftware.data.model.ui.Note;
17+
import ru.plumsoftware.notebook.R;
18+
import ru.plumsoftware.notebook.manager.extra.ExtraNames;
19+
import ru.plumsoftware.notebook.manager.unique.UniqueIdGenerator;
20+
import ru.plumsoftware.notebook.presentation.activities.note.model.AddNoteModel;
21+
import ru.plumsoftware.notebook.presentation.activities.note.model.Mode;
22+
import ru.plumsoftware.notebook.presentation.activities.note.view.AddNoteView;
23+
24+
public class AddNotePresenterImpl implements AddNotePresenter {
25+
26+
private final AddNoteView view;
27+
private final AddNoteModel addNoteModel;
28+
private SQLiteDatabase sqLiteDatabaseNotes;
29+
30+
public AddNotePresenterImpl(AddNoteView view, Context context, Activity activity) {
31+
this.view = view;
32+
33+
addNoteModel = new AddNoteModel(
34+
activity,
35+
context
36+
);
37+
}
38+
39+
@Override
40+
public void initNote() {
41+
42+
SQLiteDatabaseManager sqLiteDatabaseManager = new SQLiteDatabaseManager(addNoteModel.getContext());
43+
sqLiteDatabaseNotes = sqLiteDatabaseManager.getWritableDatabase();
44+
45+
String title;
46+
String textOnButton;
47+
String time;
48+
49+
if (addNoteModel.getActivity().getIntent().getBooleanExtra(ExtraNames.AddNoteActivity.update, false)) {
50+
addNoteModel.setMode(Mode.Edit);
51+
title = "Редактировать заметку";
52+
textOnButton = "РЕДАКТИРОВАТЬ";
53+
time = new SimpleDateFormat("dd.MM.yyyy HH:mm", Locale.getDefault()).format(new Date(addNoteModel.getNote().getAddNoteTime()));
54+
} else {
55+
addNoteModel.setMode(Mode.New);
56+
title = "Добавить заметку";
57+
textOnButton = "СОХРАНИТЬ";
58+
time = new SimpleDateFormat("dd.MM.yyyy HH:mm", Locale.getDefault()).format(new Date(System.currentTimeMillis()));
59+
}
60+
view.initToolbarTitle(title, textOnButton, time);
61+
62+
addNoteModel.setNote(addNoteModel.getActivity().getIntent().getParcelableExtra(ExtraNames.AddNoteActivity.note));
63+
if (addNoteModel.getNote() != null) {
64+
view.initNote(addNoteModel.getNote());
65+
}
66+
}
67+
68+
@Override
69+
public void initMobileSdk() {
70+
MobileAds.initialize(addNoteModel.getContext(), () -> {
71+
});
72+
}
73+
74+
@Override
75+
public void putNote(String name, String text, int or, int c, long time, boolean isNotify) {
76+
if (addNoteModel.getMode() == Mode.New) {
77+
saveNote(name, text, or, c, time, isNotify);
78+
} else if (addNoteModel.getMode() == Mode.Edit) {
79+
updateNote(name, text, or, c, time, isNotify);
80+
}
81+
}
82+
83+
private void updateNote(String name, String text, int or, int c, long time, boolean isNotify) {
84+
ContentValues contentValues = new ContentValues();
85+
contentValues.put(DatabaseConstants._NOTE_NAME, name);
86+
contentValues.put(DatabaseConstants._NOTE_TEXT, text);
87+
contentValues.put(DatabaseConstants._NOTE_PROMO, or);
88+
contentValues.put(DatabaseConstants._NOTE_COLOR, c);
89+
contentValues.put(DatabaseConstants._IS_LIKED, 0);
90+
contentValues.put(DatabaseConstants._IS_PINNED, 0);
91+
contentValues.put(DatabaseConstants._ADD_NOTE_TIME, time);
92+
contentValues.put(DatabaseConstants._IS_NOTIFY, isNotify);
93+
contentValues.put(DatabaseConstants._CHANNEL_ID, addNoteModel.getNote().getNotificationChannelId());
94+
sqLiteDatabaseNotes.update(DatabaseConstants._NOTES_TABLE_NAME, contentValues, DatabaseConstants._ID + " = ?", new String[]{String.valueOf(addNoteModel.getNote().getId())});
95+
}
96+
97+
private void saveNote(String name, String text, int or, int c, long time, boolean isNotify) {
98+
if (name == null || name.isEmpty())
99+
name = "";
100+
if (text == null || text.isEmpty())
101+
text = "";
102+
103+
String notificationChannelId = UniqueIdGenerator.generateUniqueId();
104+
105+
int isNotifyInt;
106+
if (isNotify) {
107+
isNotifyInt = 1;
108+
} else {
109+
isNotifyInt = 0;
110+
}
111+
112+
Note note = new Note(
113+
0,
114+
0,
115+
or,
116+
0,
117+
0,
118+
c,
119+
name,
120+
text,
121+
time,
122+
0,
123+
notificationChannelId,
124+
isNotifyInt
125+
);
126+
127+
ContentValues contentValues = new ContentValues();
128+
contentValues.put(DatabaseConstants._NOTE_NAME, name);
129+
contentValues.put(DatabaseConstants._NOTE_TEXT, text);
130+
contentValues.put(DatabaseConstants._NOTE_PROMO, or);
131+
contentValues.put(DatabaseConstants._NOTE_COLOR, c);
132+
contentValues.put(DatabaseConstants._IS_LIKED, 0);
133+
contentValues.put(DatabaseConstants._IS_PINNED, 0);
134+
contentValues.put(DatabaseConstants._ADD_NOTE_TIME, time);
135+
contentValues.put(DatabaseConstants._IS_NOTIFY, isNotifyInt);
136+
contentValues.put(DatabaseConstants._CHANNEL_ID, notificationChannelId);
137+
sqLiteDatabaseNotes.insert(DatabaseConstants._NOTES_TABLE_NAME, null, contentValues);
138+
view.showSnackBar();
139+
}
140+
}

0 commit comments

Comments
 (0)