Skip to content

Commit 3bcae93

Browse files
committedApr 4, 2024
upgrade gradle and delete page if no more elements on it
1 parent 8a7fd04 commit 3bcae93

File tree

5 files changed

+105
-83
lines changed

5 files changed

+105
-83
lines changed
 

‎app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
mavenCentral()
99
}
1010
dependencies {
11-
classpath 'com.android.tools.build:gradle:8.2.2'
11+
classpath 'com.android.tools.build:gradle:8.3.1'
1212
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.7.7"
1313
}
1414
}
@@ -76,6 +76,6 @@ dependencies {
7676

7777
buildscript {
7878
dependencies {
79-
classpath 'com.android.tools.build:gradle:8.2.2'
79+
classpath 'com.android.tools.build:gradle:8.3.1'
8080
}
8181
}

‎app/src/main/java/fr/nuage/souvenirs/viewmodel/AlbumViewModel.java

+85-79
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ private void updatePages(ArrayList<Page> pages) {
9494
while (i < this.pages.size()) {
9595
PageViewModel pvm = this.pages.get(i);
9696
if (pages.stream().filter(page -> page.getId().equals(pvm.getId())).count() == 0) {
97+
//if page as focus, change focus
98+
if (pvm.equals(getFocusPage())) {
99+
if (i > 0) {
100+
setFocusPage(getPage(i-1));
101+
} else if (this.pages.size() > 1) {
102+
setFocusPage(getPage(i + 1));
103+
}
104+
}
97105
this.pages.remove(i);
98106
} else {
99107
i++;
@@ -118,103 +126,97 @@ private void updatePages(ArrayList<Page> pages) {
118126
public void setAlbum(Album album) {
119127
Album oldAlbum = getAlbum();
120128
this.album = album;
121-
new Handler(Looper.getMainLooper()).post(new Runnable() {
122-
@Override
123-
public void run() {
124-
if (album != oldAlbum) {
125-
if (oldAlbum != null) {
126-
//remove previous livedata observers for Album
127-
name.removeSource(oldAlbum.getLiveDataName());
128-
ldDate.removeSource(oldAlbum.getLdDate());
129-
ldPages = new MutableLiveData<>();
130-
ldAlbumImage.removeSource(oldAlbum.getLdAlbumImage());
131-
ldNCState.removeSource(oldAlbum.getLdLastEditDate());
132-
ldNCState.removeSource(oldAlbum.getLdPageLastEditDate());
133-
}
134-
if (album != null) {
135-
ldHasAlbum.postValue(true);
136-
//set livedata observers for Album
137-
name.addSource(album.getLiveDataName(), name2 -> {
138-
name.setValue(name2);
139-
});
140-
ldDate.addSource(album.getLdDate(), date -> {
141-
ldDate.setValue((new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault())).format(date));
142-
});
143-
ldPages = Transformations.map(album.getLiveDataPages(), pagesModel -> {
144-
updatePages(pagesModel);
145-
return new ArrayList<>(pages);
146-
});
147-
ldAlbumImage.addSource(album.getLdAlbumImage(), imagePath -> {
148-
ldAlbumImage.setValue(imagePath);
149-
});
150-
ldNCState.addSource(album.getLdLastEditDate(), date -> {
151-
ldNCState.postValue(getNCState());
152-
});
153-
ldNCState.addSource(album.getLdPageLastEditDate(), date -> {
154-
ldNCState.postValue(getNCState());
155-
});
156-
} else {
157-
ldHasAlbum.postValue(false);
158-
if (albumNC != null) { //reset date to trigger ldIsSyncNC
159-
albumNC.setLastEditDate(albumNC.getLastEditDate());
160-
}
161-
}
162-
}
163-
}
164-
});
165-
}
166-
167-
public void setAlbumNC(AlbumNC albumNC) {
168-
AlbumNC oldAlbum = getAlbumNC();
169-
this.albumNC = albumNC;
170-
ldNCState.postValue(NC_STATE_UNKNOWN);
171-
new Handler(Looper.getMainLooper()).post(new Runnable() {
172-
@Override
173-
public void run() {
174-
if ((albumNC != oldAlbum) && (oldAlbum != null)) {
129+
new Handler(Looper.getMainLooper()).post(() -> {
130+
if (album != oldAlbum) {
131+
if (oldAlbum != null) {
175132
//remove previous livedata observers for Album
176-
name.removeSource(oldAlbum.getLdName());
133+
name.removeSource(oldAlbum.getLiveDataName());
177134
ldDate.removeSource(oldAlbum.getLdDate());
135+
ldPages = new MutableLiveData<>();
136+
ldAlbumImage.removeSource(oldAlbum.getLdAlbumImage());
178137
ldNCState.removeSource(oldAlbum.getLdLastEditDate());
179138
ldNCState.removeSource(oldAlbum.getLdPageLastEditDate());
180-
ldNCState.removeSource(oldAlbum.getLdState());
181-
ldIsShared.removeSource(oldAlbum.getLdIsShared());
182139
}
183-
if (albumNC != null) {
184-
ldHasAlbumNC.postValue(true);
185-
//set livedata observers for AlbumNC
186-
name.addSource(albumNC.getLdName(), name2 -> {
187-
if (album == null) {
188-
name.setValue(name2);
189-
}
140+
if (album != null) {
141+
ldHasAlbum.postValue(true);
142+
//set livedata observers for Album
143+
name.addSource(album.getLiveDataName(), name2 -> {
144+
name.setValue(name2);
190145
});
191-
ldDate.addSource(albumNC.getLdDate(), date -> {
192-
if (album == null) {
193-
ldDate.setValue((new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault())).format(date));
194-
}
146+
ldDate.addSource(album.getLdDate(), date -> {
147+
ldDate.setValue((new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault())).format(date));
195148
});
196-
ldNCState.addSource(albumNC.getLdLastEditDate(), date -> {
197-
ldNCState.postValue(getNCState());
149+
ldPages = Transformations.map(album.getLiveDataPages(), pagesModel -> {
150+
updatePages(pagesModel);
151+
return new ArrayList<>(pages);
198152
});
199-
ldNCState.addSource(albumNC.getLdPageLastEditDate(), date -> {
200-
ldNCState.postValue(getNCState());
153+
ldAlbumImage.addSource(album.getLdAlbumImage(), imagePath -> {
154+
ldAlbumImage.setValue(imagePath);
201155
});
202-
ldNCState.addSource(albumNC.getLdState(), state -> {
156+
ldNCState.addSource(album.getLdLastEditDate(), date -> {
203157
ldNCState.postValue(getNCState());
204158
});
205-
ldIsShared.addSource(albumNC.getLdIsShared(), isShared -> {
206-
ldIsShared.setValue(isShared);
159+
ldNCState.addSource(album.getLdPageLastEditDate(), date -> {
160+
ldNCState.postValue(getNCState());
207161
});
208162
} else {
209-
ldHasAlbumNC.postValue(false);
210-
if (album != null) { //reset date to trigger ldIsSyncNC
211-
album.setLastEditDate(album.getLastEditDate());
163+
ldHasAlbum.postValue(false);
164+
if (albumNC != null) { //reset date to trigger ldIsSyncNC
165+
albumNC.setLastEditDate(albumNC.getLastEditDate());
212166
}
213167
}
214168
}
215169
});
216170
}
217171

172+
public void setAlbumNC(AlbumNC albumNC) {
173+
AlbumNC oldAlbum = getAlbumNC();
174+
this.albumNC = albumNC;
175+
ldNCState.postValue(NC_STATE_UNKNOWN);
176+
new Handler(Looper.getMainLooper()).post(() -> {
177+
if ((albumNC != oldAlbum) && (oldAlbum != null)) {
178+
//remove previous livedata observers for Album
179+
name.removeSource(oldAlbum.getLdName());
180+
ldDate.removeSource(oldAlbum.getLdDate());
181+
ldNCState.removeSource(oldAlbum.getLdLastEditDate());
182+
ldNCState.removeSource(oldAlbum.getLdPageLastEditDate());
183+
ldNCState.removeSource(oldAlbum.getLdState());
184+
ldIsShared.removeSource(oldAlbum.getLdIsShared());
185+
}
186+
if (albumNC != null) {
187+
ldHasAlbumNC.postValue(true);
188+
//set livedata observers for AlbumNC
189+
name.addSource(albumNC.getLdName(), name2 -> {
190+
if (album == null) {
191+
name.setValue(name2);
192+
}
193+
});
194+
ldDate.addSource(albumNC.getLdDate(), date -> {
195+
if (album == null) {
196+
ldDate.setValue((new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault())).format(date));
197+
}
198+
});
199+
ldNCState.addSource(albumNC.getLdLastEditDate(), date -> {
200+
ldNCState.postValue(getNCState());
201+
});
202+
ldNCState.addSource(albumNC.getLdPageLastEditDate(), date -> {
203+
ldNCState.postValue(getNCState());
204+
});
205+
ldNCState.addSource(albumNC.getLdState(), state -> {
206+
ldNCState.postValue(getNCState());
207+
});
208+
ldIsShared.addSource(albumNC.getLdIsShared(), isShared -> {
209+
ldIsShared.setValue(isShared);
210+
});
211+
} else {
212+
ldHasAlbumNC.postValue(false);
213+
if (album != null) { //reset date to trigger ldIsSyncNC
214+
album.setLastEditDate(album.getLastEditDate());
215+
}
216+
}
217+
});
218+
}
219+
218220
public boolean isInSync() {
219221
if ((albumNC == null) || (album == null)) {
220222
return false;
@@ -468,8 +470,12 @@ public void moveElementToPage(UUID elementUuid, @NonNull PageViewModel destPageV
468470
pageViewModel.removeElement(elementViewModel);
469471
destPageViewModel.addElement(elementViewModel);
470472
TilePageBuilder pageBuilder = new TilePageBuilder();
471-
pageBuilder.applyDefaultStyle(pageViewModel.getPage());
472473
pageBuilder.applyDefaultStyle(destPageViewModel.getPage());
474+
if (pageViewModel.getPage().getElements().size() == 0) {
475+
getAlbum().delPage(pageViewModel.getPage());
476+
} else {
477+
pageBuilder.applyDefaultStyle(pageViewModel.getPage());
478+
}
473479
return;
474480
}
475481
}

‎app/src/main/java/fr/nuage/souvenirs/viewmodel/PageViewModel.java

+16
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ private void updateElements(ArrayList<Element> elements) {
7070
ElementViewModel evm = this.elements.get(i);
7171
if (elements.stream().filter(element -> element.getId().equals(evm.getId())).count() == 0) {
7272
this.elements.remove(i);
73+
//if no more elements, delete page
74+
if (elements.size() == 0) {
75+
delete();
76+
}
7377
} else {
7478
i++;
7579
}
@@ -297,4 +301,16 @@ public AudioElementViewModel getAudioElementViewModel() {
297301
}
298302
return null;
299303
}
304+
305+
@Override
306+
public boolean equals(Object obj) {
307+
if (obj == this) {
308+
return true;
309+
}
310+
if (obj.getClass() != this.getClass()) {
311+
return false;
312+
}
313+
PageViewModel c = (PageViewModel) obj;
314+
return c.getPage().getId().equals(getPage().getId());
315+
}
300316
}

‎build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
mavenCentral()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:8.2.2'
10+
classpath 'com.android.tools.build:gradle:8.3.1'
1111
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.7.7"
1212

1313
// NOTE: Do not place your application dependencies here; they belong

‎gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

0 commit comments

Comments
 (0)
Failed to load comments.