/*************************************************************************** * Copyright (C) 2011 by CSSlayer * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * ***************************************************************************/ #include "kimpanelinputpanelcontainer.h" #include "kimpanelservice.h" #include "kimpanelagent.h" #include "kimpaneldataengine.h" KimpanelInputPanelContainer::KimpanelInputPanelContainer(QObject* parent, PanelAgent* panelAgent): DataContainer(parent), m_panelAgent(panelAgent) { connect(m_panelAgent, &PanelAgent::updateAux, this, &KimpanelInputPanelContainer::updateAux); connect(m_panelAgent, &PanelAgent::updatePreeditText, this, &KimpanelInputPanelContainer::updatePreeditText); connect(m_panelAgent, &PanelAgent::updatePreeditCaret, this, &KimpanelInputPanelContainer::updatePreeditCaret); connect(m_panelAgent, &PanelAgent::updateLookupTable, this, &KimpanelInputPanelContainer::updateLookupTable); connect(m_panelAgent, &PanelAgent::updateSpotLocation, this, &KimpanelInputPanelContainer::updateSpotLocation); connect(m_panelAgent, &PanelAgent::updateSpotRect, this, &KimpanelInputPanelContainer::updateSpotRect); connect(m_panelAgent, &PanelAgent::showAux, this, &KimpanelInputPanelContainer::showAux); connect(m_panelAgent, &PanelAgent::showPreedit, this, &KimpanelInputPanelContainer::showPreedit); connect(m_panelAgent, &PanelAgent::showLookupTable, this, &KimpanelInputPanelContainer::showLookupTable); connect(m_panelAgent, &PanelAgent::updateLookupTableCursor, this, &KimpanelInputPanelContainer::updateLookupTableCursor); connect(m_panelAgent, &PanelAgent::updateLookupTableFull, this, &KimpanelInputPanelContainer::updateLookupTableFull); } Plasma::Service* KimpanelInputPanelContainer::service(QObject* parent) { KimpanelService *controller = new KimpanelService(parent, QLatin1String(INPUTPANEL_SOURCE_NAME), m_panelAgent); connect(this, &Plasma::DataContainer::updateRequested, controller, &KimpanelService::enableKimpanelOperations); return controller; } void KimpanelInputPanelContainer::updateAux(const QString& text, const QList< TextAttribute >& attrList) { Q_UNUSED(attrList); setData(QStringLiteral("AuxText"), text); checkForUpdate(); } void KimpanelInputPanelContainer::updatePreeditText(const QString& text, const QList& attrList) { Q_UNUSED(attrList); setData(QStringLiteral("PreeditText"), text); checkForUpdate(); } void KimpanelInputPanelContainer::updatePreeditCaret(int pos) { setData(QStringLiteral("CaretPos"), pos); checkForUpdate(); } void KimpanelInputPanelContainer::updateLookupTable(const KimpanelLookupTable& lookupTable) { QVariantList candidateList; Q_FOREACH(const KimpanelLookupTable::Entry & entry, lookupTable.entries) { QVariantMap map; map[QStringLiteral("label")] = entry.label; map[QStringLiteral("text")] = entry.text; candidateList += map; } setData(QStringLiteral("LookupTable"), candidateList); setData(QStringLiteral("HasPrev"), lookupTable.has_prev); setData(QStringLiteral("HasNext"), lookupTable.has_next); checkForUpdate(); } void KimpanelInputPanelContainer::updateSpotLocation(int x, int y) { updateSpotRect(x, y, 0, 0); } void KimpanelInputPanelContainer::updateSpotRect(int x, int y, int w, int h) { setData(QStringLiteral("Position"), QRect(x, y, w, h)); checkForUpdate(); } void KimpanelInputPanelContainer::showAux(bool visible) { setData(QStringLiteral("AuxVisible"), visible); checkForUpdate(); } void KimpanelInputPanelContainer::showPreedit(bool visible) { setData(QStringLiteral("PreeditVisible"), visible); checkForUpdate(); } void KimpanelInputPanelContainer::showLookupTable(bool visible) { setData(QStringLiteral("LookupTableVisible"), visible); checkForUpdate(); } void KimpanelInputPanelContainer::updateLookupTableCursor(int cursor) { setData(QStringLiteral("LookupTableCursor"), cursor); checkForUpdate(); } void KimpanelInputPanelContainer::updateLookupTableFull(const KimpanelLookupTable& lookupTable, int cursor, int layout) { QVariantList candidateList; Q_FOREACH(const KimpanelLookupTable::Entry & entry, lookupTable.entries) { QVariantMap map; map[QStringLiteral("label")] = entry.label; map[QStringLiteral("text")] = entry.text; candidateList += map; } setData(QStringLiteral("LookupTable"), candidateList); setData(QStringLiteral("HasPrev"), lookupTable.has_prev); setData(QStringLiteral("HasNext"), lookupTable.has_next); setData(QStringLiteral("LookupTableCursor"), cursor); setData(QStringLiteral("LookupTableLayout"), layout); checkForUpdate(); }