GeneralData, PlayerData refactor

This commit is contained in:
Yuriy Liskov
2024-04-24 01:13:26 +03:00
parent ac4a79e632
commit 95fe8bb4de
3 changed files with 12 additions and 41 deletions

View File

@ -94,8 +94,8 @@ public class GeneralData implements ProfileChangeListener {
private List<String> mChangelog; private List<String> mChangelog;
private Map<String, Integer> mPlaylistOrder; private Map<String, Integer> mPlaylistOrder;
private final Map<Integer, Integer> mDefaultSections = new LinkedHashMap<>(); private final Map<Integer, Integer> mDefaultSections = new LinkedHashMap<>();
private final List<Video> mPendingStreams = new CopyOnWriteArrayList<>(); private List<Video> mPinnedItems;
private final List<Video> mPinnedItems = new CopyOnWriteHashList<>(); private List<Video> mPendingStreams;
private boolean mIsFullscreenModeEnabled; private boolean mIsFullscreenModeEnabled;
private Map<Integer, Video> mSelectedItems; private Map<Integer, Video> mSelectedItems;
@ -951,7 +951,8 @@ public class GeneralData implements ProfileChangeListener {
mAppExitShortcut = Helpers.parseInt(split, 3, EXIT_DOUBLE_BACK); mAppExitShortcut = Helpers.parseInt(split, 3, EXIT_DOUBLE_BACK);
mIsPlayerOnlyModeEnabled = Helpers.parseBoolean(split, 4, false); mIsPlayerOnlyModeEnabled = Helpers.parseBoolean(split, 4, false);
mBackgroundShortcut = Helpers.parseInt(split, 5, BACKGROUND_PLAYBACK_SHORTCUT_HOME_BACK); mBackgroundShortcut = Helpers.parseInt(split, 5, BACKGROUND_PLAYBACK_SHORTCUT_HOME_BACK);
String pinnedItems = Helpers.parseStr(split, 6); //String pinnedItems = Helpers.parseStr(split, 6);
mPinnedItems = Helpers.parseList(split, 6, Video::fromString);
mIsHideShortsFromSubscriptionsEnabled = Helpers.parseBoolean(split, 7, false); mIsHideShortsFromSubscriptionsEnabled = Helpers.parseBoolean(split, 7, false);
mIsRemapFastForwardToNextEnabled = Helpers.parseBoolean(split, 8, false); mIsRemapFastForwardToNextEnabled = Helpers.parseBoolean(split, 8, false);
//mScreenDimmingTimeoutMs = Helpers.parseInt(split, 9, 1); //mScreenDimmingTimeoutMs = Helpers.parseInt(split, 9, 1);
@ -975,7 +976,8 @@ public class GeneralData implements ProfileChangeListener {
mIsVPNEnabled = Helpers.parseBoolean(split, 27, false); mIsVPNEnabled = Helpers.parseBoolean(split, 27, false);
mLastPlaylistTitle = Helpers.parseStr(split, 28); mLastPlaylistTitle = Helpers.parseStr(split, 28);
mPlaylistOrder = Helpers.parseMap(split, 29, Helpers::parseStr, Helpers::parseInt); mPlaylistOrder = Helpers.parseMap(split, 29, Helpers::parseStr, Helpers::parseInt);
String pendingStreams = Helpers.parseStr(split, 30); //String pendingStreams = Helpers.parseStr(split, 30);
mPendingStreams = Helpers.parseList(split, 30, Video::fromString);
mIsGlobalClockEnabled = Helpers.parseBoolean(split, 31, true); mIsGlobalClockEnabled = Helpers.parseBoolean(split, 31, true);
mTimeFormat = Helpers.parseInt(split, 32, -1); mTimeFormat = Helpers.parseInt(split, 32, -1);
mSettingsPassword = Helpers.parseStr(split, 33); mSettingsPassword = Helpers.parseStr(split, 33);
@ -1012,25 +1014,10 @@ public class GeneralData implements ProfileChangeListener {
mRememberPinnedPosition = Helpers.parseBoolean(split, 62, false); mRememberPinnedPosition = Helpers.parseBoolean(split, 62, false);
mSelectedItems = Helpers.parseMap(split, 63, Helpers::parseInt, Video::fromString); mSelectedItems = Helpers.parseMap(split, 63, Helpers::parseInt, Video::fromString);
if (pinnedItems != null && !pinnedItems.isEmpty()) { if (mPinnedItems == null) {
mPinnedItems.clear();
String[] pinnedItemsArr = Helpers.splitArray(pinnedItems);
for (String pinnedItem : pinnedItemsArr) {
mPinnedItems.add(Video.fromString(pinnedItem));
}
} else {
initPinnedItems(); initPinnedItems();
} }
if (pendingStreams != null && !pendingStreams.isEmpty()) {
mPendingStreams.clear();
String[] pendingStreamsArr = Helpers.splitArray(pendingStreams);
for (String pendingStream : pendingStreamsArr) {
mPendingStreams.add(Video.fromString(pendingStream));
}
}
// Backward compatibility // Backward compatibility
enableSection(MediaGroup.TYPE_SETTINGS, true); enableSection(MediaGroup.TYPE_SETTINGS, true);
@ -1071,10 +1058,6 @@ public class GeneralData implements ProfileChangeListener {
@Override @Override
public void onProfileChanged() { public void onProfileChanged() {
// reset on profile change
mPinnedItems.clear();
mPendingStreams.clear();
restoreState(); restoreState();
} }
} }

View File

@ -92,7 +92,7 @@ public class PlayerData extends DataChangeBase implements PlayerEngineConstants,
private boolean mIsSkipShortsEnabled; private boolean mIsSkipShortsEnabled;
private boolean mIsLiveChatEnabled; private boolean mIsLiveChatEnabled;
private FormatItem mLastSubtitleFormat; private FormatItem mLastSubtitleFormat;
private final Set<String> mEnabledSubtitlesPerChannel = new LinkedHashSet<>(); private List<String> mEnabledSubtitlesPerChannel;
private boolean mIsSubtitlesPerChannelEnabled; private boolean mIsSubtitlesPerChannelEnabled;
private boolean mIsSpeedPerChannelEnabled; private boolean mIsSpeedPerChannelEnabled;
private final Map<String, SpeedItem> mSpeeds = new HashMap<>(); private final Map<String, SpeedItem> mSpeeds = new HashMap<>();
@ -784,7 +784,8 @@ public class PlayerData extends DataChangeBase implements PlayerEngineConstants,
mRepeatMode = Helpers.parseInt(split, 51, PlayerUI.REPEAT_MODE_ALL); mRepeatMode = Helpers.parseInt(split, 51, PlayerUI.REPEAT_MODE_ALL);
mAudioLanguage = Helpers.parseStr(split, 52, LocaleUtility.getCurrentLanguage(mPrefs.getContext())); mAudioLanguage = Helpers.parseStr(split, 52, LocaleUtility.getCurrentLanguage(mPrefs.getContext()));
mSubtitleLanguage = Helpers.parseStr(split, 53, LocaleUtility.getCurrentLanguage(mPrefs.getContext())); mSubtitleLanguage = Helpers.parseStr(split, 53, LocaleUtility.getCurrentLanguage(mPrefs.getContext()));
String enabledSubtitles = Helpers.parseStr(split, 54); //String enabledSubtitles = Helpers.parseStr(split, 54);
mEnabledSubtitlesPerChannel = Helpers.parseStrList(split, 54);
mIsSubtitlesPerChannelEnabled = Helpers.parseBoolean(split, 55, true); mIsSubtitlesPerChannelEnabled = Helpers.parseBoolean(split, 55, true);
mIsSpeedPerChannelEnabled = Helpers.parseBoolean(split, 56, true); mIsSpeedPerChannelEnabled = Helpers.parseBoolean(split, 56, true);
String[] speeds = Helpers.parseArray(split, 57); String[] speeds = Helpers.parseArray(split, 57);
@ -798,16 +799,6 @@ public class PlayerData extends DataChangeBase implements PlayerEngineConstants,
} }
} }
if (enabledSubtitles != null) {
String[] channelsArr = Helpers.splitArray(enabledSubtitles);
mEnabledSubtitlesPerChannel.clear();
mEnabledSubtitlesPerChannel.addAll(Arrays.asList(channelsArr));
} else {
mEnabledSubtitlesPerChannel.clear();
}
if (!mIsAllSpeedEnabled) { if (!mIsAllSpeedEnabled) {
mSpeed = 1.0f; mSpeed = 1.0f;
} }
@ -815,8 +806,6 @@ public class PlayerData extends DataChangeBase implements PlayerEngineConstants,
@Override @Override
protected void persistState() { protected void persistState() {
String enabledSubtitles = Helpers.mergeArray(mEnabledSubtitlesPerChannel.toArray());
mPrefs.setProfileData(VIDEO_PLAYER_DATA, Helpers.mergeData(mOKButtonBehavior, mUiHideTimeoutSec, null, mPrefs.setProfileData(VIDEO_PLAYER_DATA, Helpers.mergeData(mOKButtonBehavior, mUiHideTimeoutSec, null,
mSeekPreviewMode, mIsSeekConfirmPauseEnabled, mSeekPreviewMode, mIsSeekConfirmPauseEnabled,
mIsClockEnabled, mIsRemainingTimeEnabled, mBackgroundMode, null, // afrData was there mIsClockEnabled, mIsRemainingTimeEnabled, mBackgroundMode, null, // afrData was there
@ -828,7 +817,7 @@ public class PlayerData extends DataChangeBase implements PlayerEngineConstants,
mIsGlobalEndingTimeEnabled, mIsEndingTimeEnabled, mIsDoubleRefreshRateEnabled, mIsSeekConfirmPlayEnabled, mIsGlobalEndingTimeEnabled, mIsEndingTimeEnabled, mIsDoubleRefreshRateEnabled, mIsSeekConfirmPlayEnabled,
mStartSeekIncrementMs, null, mSubtitleScale, mPlayerVolume, mIsTooltipsEnabled, mSubtitlePosition, mIsNumberKeySeekEnabled, mStartSeekIncrementMs, null, mSubtitleScale, mPlayerVolume, mIsTooltipsEnabled, mSubtitlePosition, mIsNumberKeySeekEnabled,
mIsSkip24RateEnabled, mAfrPauseMs, mIsLiveChatEnabled, Helpers.toString(mLastSubtitleFormat), mLastSpeed, mVideoRotation, mIsSkip24RateEnabled, mAfrPauseMs, mIsLiveChatEnabled, Helpers.toString(mLastSubtitleFormat), mLastSpeed, mVideoRotation,
mVideoZoom, mRepeatMode, mAudioLanguage, mSubtitleLanguage, enabledSubtitles, mIsSubtitlesPerChannelEnabled, mVideoZoom, mRepeatMode, mAudioLanguage, mSubtitleLanguage, mEnabledSubtitlesPerChannel, mIsSubtitlesPerChannelEnabled,
mIsSpeedPerChannelEnabled, Helpers.mergeArray(mSpeeds.values().toArray()), mPitch, mIsSkipShortsEnabled mIsSpeedPerChannelEnabled, Helpers.mergeArray(mSpeeds.values().toArray()), mPitch, mIsSkipShortsEnabled
)); ));
@ -839,7 +828,6 @@ public class PlayerData extends DataChangeBase implements PlayerEngineConstants,
public void onProfileChanged() { public void onProfileChanged() {
// reset on profile change // reset on profile change
mSpeeds.clear(); mSpeeds.clear();
mEnabledSubtitlesPerChannel.clear();
restoreState(); restoreState();
} }

View File

@ -1,7 +1,7 @@
@echo off @echo off
echo Running %~n0... echo Running %~n0...
echo This script removes all apks from the repo. echo This script removes old apks from the repo.
echo Existing tags and releases won't be touched. echo Existing tags and releases won't be touched.
echo To skip specific tags add your patterns below. echo To skip specific tags add your patterns below.
echo This could be helpful when you need to clean the repo after DMCA Notice. echo This could be helpful when you need to clean the repo after DMCA Notice.