@@ -94,6 +94,14 @@ private void updatePages(ArrayList<Page> pages) {
94
94
while (i < this .pages .size ()) {
95
95
PageViewModel pvm = this .pages .get (i );
96
96
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
+ }
97
105
this .pages .remove (i );
98
106
} else {
99
107
i ++;
@@ -118,103 +126,97 @@ private void updatePages(ArrayList<Page> pages) {
118
126
public void setAlbum (Album album ) {
119
127
Album oldAlbum = getAlbum ();
120
128
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 ) {
175
132
//remove previous livedata observers for Album
176
- name .removeSource (oldAlbum .getLdName ());
133
+ name .removeSource (oldAlbum .getLiveDataName ());
177
134
ldDate .removeSource (oldAlbum .getLdDate ());
135
+ ldPages = new MutableLiveData <>();
136
+ ldAlbumImage .removeSource (oldAlbum .getLdAlbumImage ());
178
137
ldNCState .removeSource (oldAlbum .getLdLastEditDate ());
179
138
ldNCState .removeSource (oldAlbum .getLdPageLastEditDate ());
180
- ldNCState .removeSource (oldAlbum .getLdState ());
181
- ldIsShared .removeSource (oldAlbum .getLdIsShared ());
182
139
}
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 );
190
145
});
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 ));
195
148
});
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 );
198
152
});
199
- ldNCState .addSource (albumNC . getLdPageLastEditDate (), date -> {
200
- ldNCState . postValue ( getNCState () );
153
+ ldAlbumImage .addSource (album . getLdAlbumImage (), imagePath -> {
154
+ ldAlbumImage . setValue ( imagePath );
201
155
});
202
- ldNCState .addSource (albumNC . getLdState (), state -> {
156
+ ldNCState .addSource (album . getLdLastEditDate (), date -> {
203
157
ldNCState .postValue (getNCState ());
204
158
});
205
- ldIsShared .addSource (albumNC . getLdIsShared (), isShared -> {
206
- ldIsShared . setValue ( isShared );
159
+ ldNCState .addSource (album . getLdPageLastEditDate (), date -> {
160
+ ldNCState . postValue ( getNCState () );
207
161
});
208
162
} 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 ());
212
166
}
213
167
}
214
168
}
215
169
});
216
170
}
217
171
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
+
218
220
public boolean isInSync () {
219
221
if ((albumNC == null ) || (album == null )) {
220
222
return false ;
@@ -468,8 +470,12 @@ public void moveElementToPage(UUID elementUuid, @NonNull PageViewModel destPageV
468
470
pageViewModel .removeElement (elementViewModel );
469
471
destPageViewModel .addElement (elementViewModel );
470
472
TilePageBuilder pageBuilder = new TilePageBuilder ();
471
- pageBuilder .applyDefaultStyle (pageViewModel .getPage ());
472
473
pageBuilder .applyDefaultStyle (destPageViewModel .getPage ());
474
+ if (pageViewModel .getPage ().getElements ().size () == 0 ) {
475
+ getAlbum ().delPage (pageViewModel .getPage ());
476
+ } else {
477
+ pageBuilder .applyDefaultStyle (pageViewModel .getPage ());
478
+ }
473
479
return ;
474
480
}
475
481
}
0 commit comments