Experimenting with reading XML dat files.
authorMikko Keinänen <mikko.keinanen@gmail.com>
Tue, 9 Nov 2010 21:22:33 +0000 (23:22 +0200)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Tue, 9 Nov 2010 21:22:33 +0000 (23:22 +0200)
src/emufront.pro
src/mainwindow.cpp
src/mainwindow.h
src/utils/datfileutil.cpp [new file with mode: 0644]
src/utils/datfileutil.h [new file with mode: 0644]

index a11a3a5..e78d0ab 100644 (file)
@@ -10,6 +10,7 @@ INCLUDEPATH += . \
     db \
     dialogs
 QT += sql
+QT += xml
 
 
 # Input
@@ -67,7 +68,8 @@ HEADERS += mainwindow.h \
     dialogs/emufrontinputdialog.h \
     dialogs/emufrontfileobjectdialog.h \
     dialogs/browsefilepathdialog.h \
-    db/dbconfig.h
+    db/dbconfig.h \
+    utils/datfileutil.h
 SOURCES += main.cpp \
     mainwindow.cpp \
     db/databasemanager.cpp \
@@ -123,7 +125,8 @@ SOURCES += main.cpp \
     dialogs/emufrontinputdialog.cpp \
     dialogs/emufrontfileobjectdialog.cpp \
     dialogs/browsefilepathdialog.cpp \
-    db/dbconfig.cpp
+    db/dbconfig.cpp \
+    utils/datfileutil.cpp
 OTHER_FILES += 
 
 CONFIG += mobility
index 345c2c9..d7c56ed 100644 (file)
@@ -25,6 +25,7 @@
 #include "dialogs/mediaimagepathmaindialog.h"
 #include "dialogs/setupmaindialog.h"
 #include "dialogs/executablemaindialog.h"
+#include "utils/datfileutil.h"
 #include "db/databasemanager.h"
 #include "db/dbconfig.h"
 
@@ -91,6 +92,10 @@ void MainWindow::createActions()
     configTmpDirAction->setStatusTip(tr("Configure directory for temporary files."));
     connect(configTmpDirAction, SIGNAL(triggered()), this, SLOT(configureTmpDir()));
 
+    manageDatFilesAction = new QAction(tr("&Manage dats"), this);
+    manageDatFilesAction->setStatusTip(tr("Read dat files to database."));
+    connect(manageDatFilesAction, SIGNAL(triggered()), this, SLOT(manageDatFiles()));
+
     exitAction = new QAction(tr("&Exit"), this);
     exitAction->setShortcut(tr("Ctrl+Q"));
     exitAction->setStatusTip(tr("Exit EmuFront"));
@@ -169,6 +174,12 @@ void MainWindow::configureTmpDir()
     }
 }
 
+void MainWindow::manageDatFiles()
+{
+    DatFileUtil dfu;
+    dfu.open();
+}
+
 void MainWindow::activateDialog(EmuFrontDialog* dia) const
 {
     dia->show();
@@ -188,6 +199,7 @@ void MainWindow::createMenus()
     configMenu->addAction(configSetupAction);
     configMenu->addAction(configEmulatorAction);
     configMenu->addAction(configTmpDirAction);
+    configMenu->addAction(manageDatFilesAction);
 
     helpMenu = menuBar()->addMenu(tr("&Help"));
     helpMenu->addAction(aboutAction);
index 1b9ca0b..c694ba5 100644 (file)
@@ -33,6 +33,7 @@ class QLabel;
 class DatabaseManager;
 class EmuFrontDialog;
 class EmuLauncher;
+class DatFileUtil;
 
 class MainWindow : public QMainWindow
 {
@@ -53,6 +54,7 @@ private slots:
     void configureEmulators();
     void configureTmpDir();
     void updateData();
+    void manageDatFiles();
     void about();
 
 private:
@@ -83,6 +85,7 @@ private:
     QAction *exitAction;
     QAction *aboutAction;
     QAction *configTmpDirAction;
+    QAction *manageDatFilesAction;
        QLabel *messageLabel;
     DatabaseManager *dbManager;
     EmuLauncher *launcher;
diff --git a/src/utils/datfileutil.cpp b/src/utils/datfileutil.cpp
new file mode 100644 (file)
index 0000000..bab1269
--- /dev/null
@@ -0,0 +1,34 @@
+#include "datfileutil.h"
+#include <QtGui>
+
+DatFileUtil::DatFileUtil(QWidget *parent) :
+    QWidget(parent)
+{
+}
+
+void DatFileUtil::open()
+{
+    QString fileName = QFileDialog::getOpenFileName(this, tr("Open Dat File"),
+        QDir::currentPath(), tr("XML Dat Files (*.xml)"));
+    if (fileName.isEmpty()) return;
+
+    QDomDocument doc("datFile");
+    QFile file(fileName);
+    if (!file.open(QIODevice::ReadOnly))
+        return;
+    if (!doc.setContent(&file)) {
+        file.close();
+        return;
+    }
+    file.close();
+
+    QDomElement docElem = doc.documentElement();
+    QDomNode n = docElem.firstChild();
+    while(!n.isNull()) {
+        QDomElement e = n.toElement(); // try to convert the node to an element.
+        if(!e.isNull()) {
+            qDebug() << qPrintable(e.tagName()) << endl; // the node really is an element.
+        }
+        n = n.nextSibling();
+    }
+}
diff --git a/src/utils/datfileutil.h b/src/utils/datfileutil.h
new file mode 100644 (file)
index 0000000..73238ee
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef DATFILEUTIL_H
+#define DATFILEUTIL_H
+
+#include <QWidget>
+#include <QtXml>
+
+class DatFileUtil : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit DatFileUtil(QWidget *parent = 0);
+    void open();
+
+signals:
+
+public slots:
+
+private:
+
+};
+
+#endif // DATFILEUTIL_H