void CWordsBaseFrame::OnWordLevelChange( UINT nID ) { auto nDelta = nID == ID_TB_WL_UP ? 1 : -1; set<long> setSelectedRows; int startCol;long startRow;int endCol;long endRow; int rt = m_wndGrid.EnumFirstBlock(&startCol, &startRow, &endCol, &endRow); while(rt == UG_SUCCESS){ for(long i = startRow; i <= endRow; i++) setSelectedRows.insert(i); rt = m_wndGrid.EnumNextBlock(&startCol, &startRow, &endCol, &endRow); } auto nColWord = GetDataGridNewRecordInfo()[0].nCol; for(long row : setSelectedRows){ auto pszWord = m_wndGrid.QuickGetText(nColWord, row); auto nLevel = GetWordLevel(pszWord); auto nNewLevel = boost::algorithm::clamp(nLevel + nDelta, -3, 3); if(nLevel != nNewLevel){ CString sql; sql.Format(_T("UPDATE WORDSLANG SET LEVEL=%d WHERE LANGID=%d AND WORD='%s'"), nNewLevel, m_lbuSettings.nLangID, DoubleApostrophe(pszWord)); m_rsWordLevel.Open(sql); m_mapWord2Level[pszWord] = nNewLevel; } } m_wndGrid.RedrawAll(); }
int CWordsBaseFrame::GetWordLevel( LPCTSTR pszWord ) { if(m_mapWord2Level.count(pszWord) == 0){ CString sql; sql.Format(_T("SELECT LEVEL FROM WORDSLANG WHERE LANGID=%d AND WORD='%s'"), m_lbuSettings.nLangID, DoubleApostrophe(pszWord)); m_rsWordLevel.Open(sql); m_mapWord2Level[pszWord] = m_rsWordLevel.IsEof() ? 0 : m_rsWordLevel.GetFieldValueAsInt(_T("LEVEL")); } return m_mapWord2Level.at(pszWord); }
void CFilterDlg::OnOK() { CDialog::OnOK(); m_strFilter = DoubleApostrophe(theApp.AutoCorrect(m_strFilter, m_rsAutoCorrect)); }