I recently ported my Audiobook Reader app for symbian using symbian components. As there is no common QML based file dialog, I need to create my own.
I uploaded my implementation to Gitorious repository here. Currently this code works for only symbian as its used symbian components, but it can be easily ported to work on meego as well.
In this post I will try to explain how this file dialog can be used. Repository also include full working sample.
Lets start with main.cpp file. We need to create instance of FileModel and share it with QML and rest of code is to launch our mainl Qml file.
Here is demo of file dialog.
I uploaded my implementation to Gitorious repository here. Currently this code works for only symbian as its used symbian components, but it can be easily ported to work on meego as well.
In this post I will try to explain how this file dialog can be used. Repository also include full working sample.
Lets start with main.cpp file. We need to create instance of FileModel and share it with QML and rest of code is to launch our mainl Qml file.
int main( int argc, char* argv[] ) { QApplication app(argc,argv); QDeclarativeView view; FileModel fileModel; QDeclarativeContext *ctxt = view.rootContext(); ctxt->setContextProperty("fileModel", &fileModel); view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); view.setResizeMode( QDeclarativeView::SizeRootObjectToView ); view.setSource(QUrl("qrc:/main.qml")); view.show(); return app.exec(); }Now QML file which needs to use FileDialog, following code can be used. Here in openFile function, if you want to select Folder/Directory then dirMode should be set to true, if you want to select File than set it to false.
Page{ id:page function openFile( dirMode ) { var component = Qt.createComponent("FileDialog.qml"); var dialog = component.createObject(page); if( dialog !== null ) { if( dirMode) { dialog.dirMode = true; } dialog.fileSelected.connect(fileSelected); dialog.directorySelected.connect(directorySelected); dialog.open(); } } function fileSelected( filePath ) { console.debug("File selected:" + filePath); } function directorySelected( dirPath ) { console.debug("Folder selected:" + dirPath); } tools: ToolBarLayout { ToolButton { iconSource: "toolbar-back"; onClicked: { Qt.quit(); } } ToolButton { text: "File Selection" onClicked: { page.openFile(false); } } ToolButton { text: "Folder Selection" onClicked: { page.openFile(true); } } } }Following are few snaps of FileDialog component running from my Audiobook reader application.
Here is demo of file dialog.