void MainController::updateLookupTableFull(const KimpanelLookupTable &lookup_table, int cursor, int layout) { bool isHorizontal; switch (layout) { case CLH_Vertical: isHorizontal = false; break; case CLH_Horizontal: isHorizontal = true; break; default: isHorizontal = mIsHorizontal; break; } if (isHorizontal != mModel->isHorizontal()) { mModel->setIsHorizontal(isHorizontal); mSkinBase->reloadSkin(); } mModel->setHighLight(cursor); updateLookupTable(lookup_table); }
void Engine::updateLookupTableFast (const LookupTablePointer & lookupTablePtr, bool visible) { if ( static_cast<uint>(lookupTablePtr->candidates().size()) <= (lookupTablePtr->pageSize() << 2) ) { updateLookupTable(lookupTablePtr, visible); return ; } LookupTable newLookupTable(lookupTablePtr->pageSize(), 0, lookupTablePtr->isCursorVisible(), lookupTablePtr->isRound()); uint pageNumBegin = lookupTablePtr->cursorPos() / lookupTablePtr->pageSize(); for ( int i = 0; i < (lookupTablePtr->candidates().size()) \ && i < static_cast<int>(pageNumBegin * lookupTablePtr->pageSize() + lookupTablePtr->pageSize()); ++i ) { newLookupTable.appendCandidate (lookupTablePtr->candidate (i)); } newLookupTable.setCursorPos (lookupTablePtr->cursorPos ()); updateLookupTable (static_cast<LookupTablePointer>(&newLookupTable), visible); }
void MainController::init() { loadCfg(); qDebug()<<"MainController::init()"; qmlRegisterType<CandidateWord>(); mTopLevel = new TopLevel; mView = new QDeclarativeView; mModel = MainModel::self(); mModel->setIsHorizontal(mIsHorizontal); mSkinBase = new SkinBase; mTopLevel->setCenterWidget(mView); mView->setContentsMargins(0, 0, 0, 0); mView->setResizeMode(QDeclarativeView::SizeViewToRootObject); mView->setResizeAnchor(QGraphicsView::AnchorViewCenter); mView->viewport()->setAutoFillBackground(false); mView->rootContext()->setContextProperty("mainCtrl", this); mView->rootContext()->setContextProperty("mainModel", mModel); mView->rootContext()->setContextProperty("mainSkin", mSkinBase); mView->rootContext()->setContextProperty("mainWidget", mTopLevel); mView->setSource(QUrl("qrc:/qml/main.qml")); mAgent = new PanelAgent(this); mSystemTray = new QSystemTrayIcon(QIcon::fromTheme("fcitx"), this); mTrayMenu = new SystemTrayMenu(mAgent); mAgent->created(); mTrayMenu->init(); mSystemTray->setContextMenu(mTrayMenu); mSystemTray->setToolTip("fcitx-qimpanel"); mSystemTray->show(); QObject::connect(mAgent, SIGNAL(updateProperty(KimpanelProperty)), this, SLOT(updateProperty(KimpanelProperty))); QObject::connect(mAgent, SIGNAL(updatePreeditText(QString, QList<TextAttribute>)), this, SLOT(updatePreeditText(QString, QList<TextAttribute>))); QObject::connect(mAgent, SIGNAL(updateLookupTable(KimpanelLookupTable)), this, SLOT(updateLookupTable(KimpanelLookupTable))); QObject::connect(mAgent, SIGNAL(updateLookupTableFull(KimpanelLookupTable, int, int)), this, SLOT(updateLookupTableFull(KimpanelLookupTable, int, int))); QObject::connect(mAgent, SIGNAL(updateSpotLocation(int, int)), this, SLOT(updateSpotLocation(int, int))); QObject::connect(mAgent, SIGNAL(updateSpotRect(int, int, int, int)), this, SLOT(updateSpotRect(int, int, int, int))); QObject::connect(mAgent, SIGNAL(showPreedit(bool)), this, SLOT(showPreedit(bool))); QObject::connect(mAgent, SIGNAL(showAux(bool)), this, SLOT(showAux(bool))); QObject::connect(mAgent, SIGNAL(updateAux(QString, QList<TextAttribute>)), this, SLOT(updateAux(QString, QList<TextAttribute>))); QObject::connect(mAgent, SIGNAL(showLookupTable(bool)), this, SLOT(showLookupTable(bool))); QObject::connect(mAgent, SIGNAL(updateLookupTableCursor(int)), this, SLOT(updateLookupTableCursor(int))); QObject::connect(mAgent, SIGNAL(updatePreeditCaret(int)), this, SLOT(updatePreeditCaret(int))); // socketpair(AF_UNIX, SOCK_STREAM, 0, mSigFd); // mSocketNotifier = new QSocketNotifier(mSigFd[1], QSocketNotifier::Read, this); // connect(mSocketNotifier, SIGNAL(activated(int)), this, SLOT(handleSig())); creatDBusService();//创建DBus服务 }