Beispiel #1
0
bool DictWidget::lookup(const QString &word)
{
    if (word.isEmpty() || word_ == word.trimmed())
    {
        return false;
    }

    resetSimilarWordsOffset();

    // Clean the word.
    word_ = word.trimmed();

    // Title
    QString result;
    QString fuzzy_word("");
    bool ret = dict_.fuzzyTranslate(word_, result, fuzzy_word);

    formatResult(result, fuzzy_word);

    // Result
    doc_.setHtml(result);

    // Always stop timer as the screen can be updated later.
    launchTimer(false);

    update_parent_ = false;
    updateVisibleWidgets();
    onDetailsClicked(true);
    return ret;
}
Beispiel #2
0
void DictWidget::updateSimilarWordsModel(int count)
{
    // Pick up similar words from current dictionary.
    similar_words_.clear();
    dict_.similarWords(word_, similar_words_, similar_words_offset_, count);

    if(similar_words_.isEmpty())
    {
        if(!fuzzy_word_.isEmpty())
        {
            similar_words_.clear();
            dict_.similarWords(fuzzy_word_, similar_words_, similar_words_offset_, count);
        }
    }

    QString result;
    QString fuzzy_word("");
    if(similar_words_.isEmpty())
    {
        dict_.fuzzyTranslate(word_, result, fuzzy_word);
        result.replace("<k>", "");
        int index = result.indexOf("</k>");
        result = result.remove(index, result.length());

        similar_words_.clear();
        dict_.similarWords(result, similar_words_, similar_words_offset_, count);
    }

    similar_words_model_.clear();
    QStandardItem *parentItem = similar_words_model_.invisibleRootItem();
    QString explanation;
    foreach(QString item, similar_words_)
    {
        // Get explanation.
        dict_.translate(item, explanation);
        QStandardItem *ptr = new QStandardItem();
        ptr->setData(item);

        item = item.trimmed();
        explanation = explanation.trimmed();
        item += "\t";
        item += explanation;

        // replace any tags in the similar word item
        item.replace(QRegExp("<[/a-zA-Z]*>"), " ");

        ptr->setText(item);
        parentItem->appendRow(ptr);
    }
Beispiel #3
0
bool DictWidget::lookup(const QString &word, bool update_screen)
{
    if (word.isEmpty() || word_ == word.trimmed())
    {
        return false;
    }

    resetSimilarWordsOffset();

    // Clean the word.
    word_ = word.trimmed();

    // Title
    QString result;
    QString fuzzy_word("");
    bool ret = dict_.fuzzyTranslate(word_, result, fuzzy_word);

    formatResult(result, fuzzy_word);

    // Result
    doc_.setHtml(result);

    // Always stop timer as the screen can be updated later.
    launchTimer(false);

    updateVisibleWidgets();

    changeInternalState(EXPLANATION);
    checkSelectedButton();

    explanation_text_.show();
    explanation_text_.setFocus();
    similar_words_view_.hide();
    s_enable_update = update_screen;
    return ret;
}