mirror of
https://gitlab.futo.org/keyboard/latinime.git
synced 2024-09-28 14:54:30 +01:00
[Rlog78a] Annotate logUnits with corrections
If the user makes a correction to a word, this is now explicitly indicated in the logUnit. Change-Id: I8638aadd7b8c8e32bbc9c4b020548d786513d887
This commit is contained in:
parent
e6a9655a03
commit
345ef67627
@ -60,6 +60,7 @@ import java.util.Map;
|
||||
private String mWord;
|
||||
private boolean mMayContainDigit;
|
||||
private boolean mIsPartOfMegaword;
|
||||
private boolean mContainsCorrection;
|
||||
|
||||
public LogUnit() {
|
||||
mLogStatementList = new ArrayList<LogStatement>();
|
||||
@ -274,6 +275,14 @@ import java.util.Map;
|
||||
return mMayContainDigit;
|
||||
}
|
||||
|
||||
public void setContainsCorrection() {
|
||||
mContainsCorrection = true;
|
||||
}
|
||||
|
||||
public boolean containsCorrection() {
|
||||
return mContainsCorrection;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return mLogStatementList.isEmpty();
|
||||
}
|
||||
@ -301,6 +310,7 @@ import java.util.Map;
|
||||
true /* isPartOfMegaword */);
|
||||
newLogUnit.mWord = null;
|
||||
newLogUnit.mMayContainDigit = mMayContainDigit;
|
||||
newLogUnit.mContainsCorrection = mContainsCorrection;
|
||||
|
||||
// Purge the logStatements and associated data from this LogUnit.
|
||||
laterLogStatements.clear();
|
||||
@ -320,6 +330,7 @@ import java.util.Map;
|
||||
mTimeList.addAll(logUnit.mTimeList);
|
||||
mWord = null;
|
||||
mMayContainDigit = mMayContainDigit || logUnit.mMayContainDigit;
|
||||
mContainsCorrection = mContainsCorrection || logUnit.mContainsCorrection;
|
||||
mIsPartOfMegaword = false;
|
||||
}
|
||||
}
|
||||
|
@ -720,6 +720,10 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||
mCurrentLogUnit.setMayContainDigit();
|
||||
}
|
||||
|
||||
private void setCurrentLogUnitContainsCorrection() {
|
||||
mCurrentLogUnit.setContainsCorrection();
|
||||
}
|
||||
|
||||
/* package for test */ void commitCurrentLogUnit() {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "commitCurrentLogUnit" + (mCurrentLogUnit.hasWord() ?
|
||||
@ -850,7 +854,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||
mCurrentLogUnit.setWord(word);
|
||||
final boolean isDictionaryWord = dictionary != null
|
||||
&& dictionary.isValidWord(word);
|
||||
mStatistics.recordWordEntered(isDictionaryWord);
|
||||
mStatistics.recordWordEntered(isDictionaryWord, mCurrentLogUnit.containsCorrection());
|
||||
}
|
||||
final LogUnit newLogUnit = mCurrentLogUnit.splitByTime(maxTime);
|
||||
enqueueCommitText(word, isBatchMode);
|
||||
@ -1181,6 +1185,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||
scrubDigitsFromString(replacedWord), index,
|
||||
suggestion == null ? null : scrubbedWord, Constants.SUGGESTION_STRIP_COORDINATE,
|
||||
Constants.SUGGESTION_STRIP_COORDINATE);
|
||||
researchLogger.setCurrentLogUnitContainsCorrection();
|
||||
researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE, isBatchMode);
|
||||
researchLogger.mStatistics.recordManualSuggestion(SystemClock.uptimeMillis());
|
||||
}
|
||||
@ -1340,6 +1345,9 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||
researchLogger.enqueueEvent(logUnit != null ? logUnit : researchLogger.mCurrentLogUnit,
|
||||
LOGSTATEMENT_LATINIME_REVERTCOMMIT, committedWord, originallyTypedWord,
|
||||
separatorString);
|
||||
if (logUnit != null) {
|
||||
logUnit.setContainsCorrection();
|
||||
}
|
||||
researchLogger.mStatistics.recordRevertCommit(SystemClock.uptimeMillis());
|
||||
researchLogger.commitCurrentLogUnitAsWord(originallyTypedWord, Long.MAX_VALUE, isBatchMode);
|
||||
}
|
||||
@ -1500,6 +1508,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||
final ResearchLogger researchLogger = getInstance();
|
||||
final String scrubbedWord = scrubDigitsFromString(committedWord);
|
||||
researchLogger.enqueueEvent(LOGSTATEMENT_COMMIT_PARTIAL_TEXT);
|
||||
researchLogger.mStatistics.recordAutoCorrection(SystemClock.uptimeMillis());
|
||||
researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, lastTimestampOfWordData,
|
||||
isBatchMode);
|
||||
}
|
||||
@ -1740,7 +1749,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||
"averageTimeDuringRepeatedDelete", "averageTimeAfterDelete",
|
||||
"dictionaryWordCount", "splitWordsCount", "gestureInputCount",
|
||||
"gestureCharsCount", "gesturesDeletedCount", "manualSuggestionsCount",
|
||||
"revertCommitsCount");
|
||||
"revertCommitsCount", "correctedWordsCount", "autoCorrectionsCount");
|
||||
private static void logStatistics() {
|
||||
final ResearchLogger researchLogger = getInstance();
|
||||
final Statistics statistics = researchLogger.mStatistics;
|
||||
@ -1754,6 +1763,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
|
||||
statistics.mDictionaryWordCount, statistics.mSplitWordsCount,
|
||||
statistics.mGesturesInputCount, statistics.mGesturesCharsCount,
|
||||
statistics.mGesturesDeletedCount, statistics.mManualSuggestionsCount,
|
||||
statistics.mRevertCommitsCount);
|
||||
statistics.mRevertCommitsCount, statistics.mCorrectedWordsCount,
|
||||
statistics.mAutoCorrectionsCount);
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ public class Statistics {
|
||||
private static final String TAG = Statistics.class.getSimpleName();
|
||||
private static final boolean DEBUG = false && ProductionFlag.IS_EXPERIMENTAL_DEBUG;
|
||||
|
||||
// TODO: Cleanup comments to only including those giving meaningful information.
|
||||
// Number of characters entered during a typing session
|
||||
int mCharCount;
|
||||
// Number of letter characters entered during a typing session
|
||||
@ -41,6 +42,8 @@ public class Statistics {
|
||||
int mDictionaryWordCount;
|
||||
// Number of words split and spaces automatically entered.
|
||||
int mSplitWordsCount;
|
||||
// Number of words entered during a session.
|
||||
int mCorrectedWordsCount;
|
||||
// Number of gestures that were input.
|
||||
int mGesturesInputCount;
|
||||
// Number of gestures that were deleted.
|
||||
@ -49,6 +52,8 @@ public class Statistics {
|
||||
int mGesturesCharsCount;
|
||||
// Number of manual suggestions chosen.
|
||||
int mManualSuggestionsCount;
|
||||
// Number of times that autocorrection was invoked.
|
||||
int mAutoCorrectionsCount;
|
||||
// Number of times a commit was reverted in this session.
|
||||
int mRevertCommitsCount;
|
||||
// Whether the text field was empty upon editing
|
||||
@ -113,10 +118,12 @@ public class Statistics {
|
||||
mWordCount = 0;
|
||||
mDictionaryWordCount = 0;
|
||||
mSplitWordsCount = 0;
|
||||
mCorrectedWordsCount = 0;
|
||||
mGesturesInputCount = 0;
|
||||
mGesturesDeletedCount = 0;
|
||||
mManualSuggestionsCount = 0;
|
||||
mRevertCommitsCount = 0;
|
||||
mAutoCorrectionsCount = 0;
|
||||
mIsEmptyUponStarting = true;
|
||||
mIsEmptinessStateKnown = false;
|
||||
mKeyCounter.reset();
|
||||
@ -152,11 +159,15 @@ public class Statistics {
|
||||
}
|
||||
}
|
||||
|
||||
public void recordWordEntered(final boolean isDictionaryWord) {
|
||||
public void recordWordEntered(final boolean isDictionaryWord,
|
||||
final boolean containsCorrection) {
|
||||
mWordCount++;
|
||||
if (isDictionaryWord) {
|
||||
mDictionaryWordCount++;
|
||||
}
|
||||
if (containsCorrection) {
|
||||
mCorrectedWordsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
public void recordSplitWords() {
|
||||
@ -184,6 +195,11 @@ public class Statistics {
|
||||
recordUserAction(time, false /* isDeletion */);
|
||||
}
|
||||
|
||||
public void recordAutoCorrection(final long time) {
|
||||
mAutoCorrectionsCount++;
|
||||
recordUserAction(time, false /* isDeletion */);
|
||||
}
|
||||
|
||||
public void recordRevertCommit(final long time) {
|
||||
mRevertCommitsCount++;
|
||||
recordUserAction(time, true /* isDeletion */);
|
||||
|
Loading…
Reference in New Issue
Block a user