codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
//////////////////// QmlInit.h ////////////////////////////// class QmlInit : public QObject { Q_OBJECT public: QmlInit(); private: QSharedPointer<QDeclarativeView> view; QSharedPointer<QmlApplicationViewer> viewer; QSharedPointer<QDeclarativeContext> rootCtxt; QSharedPointer<TitleListModel> titleListModel; MapWindow *mapWindow; DumpSettings *dumpSettings; QSharedPointer<Evopedia> evopedia; QString lang; QString searchPrefix; QStringList languageList; QSharedPointer<QStringListModelForQML> languageListModel; protected: void closeEvent(QCloseEvent *event); private slots: void on_languageChooser_currentIndexChanged(QString text); void on_searchField_textChanged(QString text); void refreshSearchResults(); }; ////////////////////////// QmlInit.cpp ///////////////////////// QmlInit::QmlInit() { titleListModel=QSharedPointer<TitleListModel>(new TitleListModel()); languageList.reserve(1); searchPrefix=QString(""); // define the view and context for QML interaction view = QSharedPointer<QDeclarativeView>(new QDeclarativeView()); QDeclarativeContext *rootCtxt = view->rootContext(); // set up the evopedia specifics titleListModel->setTitleIterator(TitleIterator()); evopedia = (static_cast<EvopediaApplication *>(qApp))->evopedia(); foreach (LocalArchive *b, evopedia->getArchiveManager()->getDefaultLocalArchives()) { qDebug() << b->getLanguage(); lang = b->getLanguage(); //DEBUG languageList << b->getLanguage(); on_languageChooser_currentIndexChanged(lang); refreshSearchResults(); } languageListModel = QSharedPointer<QStringListModelForQML>(new QStringListModelForQML()); // set the model up in the list view to use the titleListModel rootCtxt->setContextProperty("titlesModel", titleListModel.data()); rootCtxt->setContextProperty("languageSelectionModel", languageListModel.data()); view->setSource(QUrl("qrc:/Main.qml")); view->show(); QObject *rootObject= view->rootObject(); QObject::connect(rootObject, SIGNAL(signalLanguageChanged(QString)), this, SLOT(on_languageChooser_currentIndexChanged(QString))); QObject::connect(rootObject, SIGNAL(signalSearchTextChanged(QString)), this, SLOT(on_searchField_textChanged(QString))); languageListModel->setStringList(languageList); } void QmlInit::on_languageChooser_currentIndexChanged(QString text) { QObject* rootObject = view->rootObject(); if(rootObject!=NULL) rootObject->setProperty("languageButtonText",QVariant(text)); lang = text; refreshSearchResults(); } void QmlInit::on_searchField_textChanged(QString text) { searchPrefix=text; } void QmlInit::refreshSearchResults() { QSharedPointer<Evopedia> evopedia = (static_cast<EvopediaApplication *>(qApp))->evopedia(); LocalArchive *backend = evopedia->getArchiveManager()->getLocalArchive(lang); TitleIterator it; if (backend != 0) it = backend->getTitlesWithPrefix(searchPrefix); titleListModel->setTitleIterator(it); } ///////////////////////////// Main.qml ///////////////////////// PageStackWindow { id: rootWindow initialPage: searchPage SearchPage { id: searchPage } ToolBarLayout { id: commonTools visible: true ToolIcon { platformIconId: "toolbar-back"; onClicked: {myMenu.close(); pageStack.pop() } } ToolIcon { platformIconId: "toolbar-view-menu" anchors.right: (parent === undefined) ? undefined : parent.right onClicked: (myMenu.status == DialogStatus.Closed) ? myMenu.open() : myMenu.close() } } Menu { id: myMenu visualParent: pageStack MenuLayout { MenuItem { text: qsTr("Settings") } } } } ///////////////////////////////// SearchPage.qml ////////////////// Page { id: searchPage tools: commonTools signal signalLanguageChanged(string lang); signal signalSearchTextChanged(string text); ListView { id: titlesView anchors { top: parent.top bottom: searchField.top left: parent.left right: parent.right } model: titlesModel delegate: Text { text: name } } TextField { id: searchField placeholderText: "Searchterm..." anchors.bottom: parent.bottom onTextChanged: { searchPage.signalSearchTextChanged(searchField.text) } } Button { id: languageButton text: "x" anchors.left: searchField.right anchors.bottom: parent.bottom onClicked: langDialog.open() } ScrollDecorator { flickableItem: titlesView } SelectionDialog { id: langDialog titleText: qsTr("Language") selectedIndex: 0 model: ListModel { } onAccepted: { languageButton.text = langDialog.model.get(langDialog.selectedIndex).name searchPage.signalLanguageChanged(langDialog.model.get(langDialog.selectedIndex).name) } onRejected: { selectedIndex = 0 searchPage.signalLanguageChanged(langDialog.model.get(langDialog.selectedIndex).name) } } Connections { target: languageSelectionModel onStringAdded: { langDialog.model.append({name: newString}) } } }
Private
[
?
]
Run code
Submit