private void updateRecentState(MangaState state) { var ri = findState(state); if (ri == -1) { addRecent(state); } else if (Recent[ri].Pinned == state.Pinned) { Recent[ri] = state; } else { removeState(ri); addRecent(state); } }
private void unbindState(MangaState state) { state.PropertyChanged -= state_PropertyChanged; }
private int findState(MangaState state) { return Recent .Select( (value, index) => new { value, index }) .Where((x) => x.value.MangaPath.FullName == state.MangaPath.FullName) .Select((x) => x.index) .DefaultIfEmpty(-1).First(); }
private void addUnpinned(MangaState state) { bindState(state); Recent.Insert(PinnedCount, state); trimRecents(); }
private void addRecent(MangaState state) { if (state.Pinned) addPinned(state); else addUnpinned(state); }
private void addPinned(MangaState state) { bindState(state); Recent.Insert(0, state); PinnedCount++; }