Clean code and merge op ed from history

pull/137/head
FongMi 4 years ago
parent 8621e99889
commit 208a40b33c
  1. 47
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 9
      app/src/main/java/com/fongmi/android/tv/bean/History.java
  3. 14
      app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java

@ -250,8 +250,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
setText(mBinding.director, R.string.detail_director, Html.fromHtml(item.getVodDirector()).toString());
mFlagAdapter.setItems(item.getVodFlags(), null);
mBinding.video.requestFocus();
if (hasFlag()) checkHistory();
getPart(item.getVodName());
checkHistory();
checkKeep();
}
@ -417,7 +417,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
}
private void onOpening() {
mHistory.setOpening(mPlayers.getCurrentPosition());
long current = mPlayers.getCurrentPosition();
long duration = mPlayers.getDuration();
if (current > duration / 2) return;
mHistory.setOpening(current);
mControl.opening.setText(mPlayers.getStringForTime(mHistory.getOpening()));
}
@ -428,7 +431,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
}
private void onEnding() {
mHistory.setEnding(mPlayers.getCurrentPosition());
long current = mPlayers.getCurrentPosition();
long duration = mPlayers.getDuration();
if (current < duration / 2) return;
mHistory.setEnding(duration - current);
mControl.ending.setText(mPlayers.getStringForTime(mHistory.getEnding()));
}
@ -455,26 +461,22 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
});
}
private boolean hasFlag() {
if (mFlagAdapter.size() > 0) return true;
mBinding.flag.setVisibility(View.GONE);
mBinding.group.setVisibility(View.GONE);
mBinding.episode.setVisibility(View.GONE);
Notify.show(R.string.error_episode);
return false;
}
private void checkHistory() {
mHistory = History.find(getHistoryKey());
if (mFlagAdapter.size() == 0) {
mBinding.flag.setVisibility(View.GONE);
mBinding.group.setVisibility(View.GONE);
mBinding.episode.setVisibility(View.GONE);
Notify.show(R.string.error_episode);
return;
}
if (mHistory != null) {
setFlagActivated(mHistory.getFlag());
if (mHistory.isRevSort()) reverseEpisode();
mControl.opening.setText(mPlayers.getStringForTime(mHistory.getOpening()));
mControl.ending.setText(mPlayers.getStringForTime(mHistory.getEnding()));
} else {
mHistory = createHistory();
setFlagActivated(mHistory.getFlag());
mControl.opening.setText(mPlayers.getStringForTime(0));
mControl.ending.setText(mPlayers.getStringForTime(0));
}
mHistory = mHistory == null ? createHistory() : mHistory;
mControl.opening.setText(mPlayers.getStringForTime(mHistory.getOpening()));
mControl.ending.setText(mPlayers.getStringForTime(mHistory.getEnding()));
if (mHistory.isRevSort()) reverseEpisode();
setFlagActivated(mHistory.getFlag());
}
private History createHistory() {
@ -529,9 +531,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
@Override
public void onTimeChanged() {
long duration = mPlayers.getDuration();
long current = mPlayers.getCurrentPosition();
if (mHistory.getOpening() >= current) mPlayers.seekTo(mHistory.getOpening());
if (mHistory.getEnding() > 0 && mHistory.getEnding() <= current) {
if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + current >= duration) {
Clock.get().setCallback(null);
checkNext();
}

@ -183,11 +183,15 @@ public class History {
AppDatabase.get().getHistoryDao().delete(cid);
}
private void checkOpEd(History item) {
if (getOpening() == 0) setOpening(item.getOpening());
if (getEnding() == 0) setEnding(item.getEnding());
}
private void checkMerge(List<History> items) {
for (History item : items) {
if (getKey().equals(item.getKey()) || Math.abs(item.getDuration() - getDuration()) > 10 * 60 * 1000) continue;
if (getOpening() == 0) setOpening(item.getOpening());
if (getEnding() == 0) setEnding(item.getEnding());
checkOpEd(item);
item.delete();
}
}
@ -218,6 +222,7 @@ public class History {
setVodFlag(flag.getFlag());
setPosition(item.getPosition());
setVodRemarks(episode.getName());
checkOpEd(item);
break;
}
}

@ -22,7 +22,7 @@ import com.fongmi.android.tv.db.dao.SiteDao;
@Database(entities = {Config.class, Site.class, History.class, Keep.class}, version = AppDatabase.VERSION, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
public static final int VERSION = 10;
public static final int VERSION = 11;
public static final String SYMBOL = "@@@";
private static volatile AppDatabase instance;
@ -33,7 +33,7 @@ public abstract class AppDatabase extends RoomDatabase {
}
private static AppDatabase create(Context context) {
return Room.databaseBuilder(context, AppDatabase.class, "tv").addMigrations(MIGRATION_8_9).addMigrations(MIGRATION_9_10).allowMainThreadQueries().fallbackToDestructiveMigration().build();
return Room.databaseBuilder(context, AppDatabase.class, "tv").addMigrations(MIGRATION_9_11).allowMainThreadQueries().fallbackToDestructiveMigration().build();
}
public abstract KeepDao getKeepDao();
@ -44,17 +44,9 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract HistoryDao getHistoryDao();
static final Migration MIGRATION_8_9 = new Migration(8, 9) {
static final Migration MIGRATION_9_11 = new Migration(9, 11) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS `Keep` (`key` TEXT NOT NULL, `siteName` TEXT, `vodName` TEXT, `vodPic` TEXT, `createTime` INTEGER NOT NULL, `cid` INTEGER NOT NULL, PRIMARY KEY(`key`))");
}
};
static final Migration MIGRATION_9_10 = new Migration(9, 10) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("UPDATE `History` SET ending = 0;");
}
};
}

Loading…
Cancel
Save