예제 #1
0
void LayoutUpdater::onWordCandidatesChanged(const WordCandidateList &candidates)
{
    Q_D(LayoutUpdater);

    if (not d->layout || not isWordRibbonVisible()) {
        qWarning() << __PRETTY_FUNCTION__
                   << "No layout specified or word ribbon not visible.";
        return;
    }

    // Copy WordRibbon instance in order to preserve geometry and styling:
    d->layout->wordRibbon()->clearCandidates();

    const StyleAttributes * const attributes(d->activeStyleAttributes());
    const LayoutHelper::Orientation orientation(d->layout->orientation());
    const int candidate_width(attributes->keyAreaWidth(orientation) / (orientation == LayoutHelper::Landscape ? 6 : 4));

    for (int index = 0; index < candidates.count(); ++index) {
        WordCandidate word_candidate(candidates.at(index));
        // FIXME candidate height needs to come from word ribbon height
        word_candidate.rArea().setSize(QSize(word_candidate.source() == WordCandidate::SourceUser
                                             ? attributes->keyAreaWidth(orientation) : candidate_width, 56));
        word_candidate.setOrigin(QPoint(index * candidate_width, 0));
        applyStyleToCandidate(&word_candidate, d->activeStyleAttributes(), orientation, DeactivateElement);
        d->layout->wordRibbon()->appendCandidate(word_candidate);
    }
}
예제 #2
0
void WordRibbon::onWordCandidatesChanged(const WordCandidateList &candidates)
{
    clearCandidates();

    for (int index = 0; index < candidates.count(); ++index) {
        WordCandidate word_candidate(candidates.at(index));
        appendCandidate(word_candidate);
    }
}