From d6bf5664a12c5a809096f1f12e9b38bdf2dd74df Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marcin=20Ka=C5=BAmierczak?= Date: Thu, 16 Dec 2010 10:10:51 +0100 Subject: [PATCH] first version of list element in qml --- src/mdictionary/gui/DictTypeModel.cpp | 42 ++++++++++++++++++++++++++ src/mdictionary/gui/DictTypeModel.h | 31 +++++++++++++++++++ src/mdictionary/mdictionary.pro | 20 ++++++++++-- src/mdictionary/qml/DictListDelegate.qml | 6 ++++ src/mdictionary/qml/DictTypeListDelegate.qml | 5 +++ src/mdictionary/qml/DictTypeListView.qml | 8 +++++ src/mdictionary/qml/DictTypeSelectDialog.qml | 33 ++++++++++++++++++++ src/mdictionary/qml/ElementsListView.qml | 6 ++++ src/mdictionary/qml/WordListDelegate.qml | 6 ++++ 9 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 src/mdictionary/gui/DictTypeModel.cpp create mode 100644 src/mdictionary/gui/DictTypeModel.h create mode 100644 src/mdictionary/qml/DictListDelegate.qml create mode 100644 src/mdictionary/qml/DictTypeListDelegate.qml create mode 100644 src/mdictionary/qml/DictTypeListView.qml create mode 100644 src/mdictionary/qml/DictTypeSelectDialog.qml create mode 100644 src/mdictionary/qml/ElementsListView.qml create mode 100644 src/mdictionary/qml/WordListDelegate.qml diff --git a/src/mdictionary/gui/DictTypeModel.cpp b/src/mdictionary/gui/DictTypeModel.cpp new file mode 100644 index 0000000..5823829 --- /dev/null +++ b/src/mdictionary/gui/DictTypeModel.cpp @@ -0,0 +1,42 @@ +#include "DictTypeModel.h" + +DictTypeModel::DictTypeModel(QList plugins, QObject *parent) : + QAbstractListModel(parent) +{ + QHash roles; + roles[TypeRole] = "type"; + setRoleNames(roles); + + setDictTypes(plugins); +} + +int DictTypeModel::rowCount(const QModelIndex &parent) const +{ + return _plugins.count(); +} + +void DictTypeModel::setDictTypes(QList plugins) +{ + for(int i = 0; i < plugins.count(); i++) + { + addType(plugins[i]); + } +} + +QVariant DictTypeModel::data(const QModelIndex & index, int role) const +{ + if (index.row() < 0 || index.row() > _plugins.count()) + return QVariant(); + + const CommonDictInterface* plugin = _plugins[index.row()]; + if (role == TypeRole) + return plugin->type(); + return QVariant(); +} + +void DictTypeModel::addType(CommonDictInterface *plugin) +{ + beginInsertRows(QModelIndex(), rowCount(), rowCount()); + _plugins << plugin; + endInsertRows(); +} diff --git a/src/mdictionary/gui/DictTypeModel.h b/src/mdictionary/gui/DictTypeModel.h new file mode 100644 index 0000000..1b24aff --- /dev/null +++ b/src/mdictionary/gui/DictTypeModel.h @@ -0,0 +1,31 @@ +#ifndef DICTTYPEMODEL_H +#define DICTTYPEMODEL_H + +#include +#include +#include "../../include/GUIInterface.h" + +class DictTypeModel : public QAbstractListModel +{ + Q_OBJECT +public: + enum DictTypeRoles + { + TypeRole = Qt::UserRole + 1 + }; + + explicit DictTypeModel(QList plugins, QObject *parent = 0); + + void setDictTypes(QList plugins); + + int rowCount(const QModelIndex & parent = QModelIndex()) const; + + QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + +private: + QList _plugins; + + void addType(CommonDictInterface* plugin); +}; + +#endif // DICTTYPEMODEL_H diff --git a/src/mdictionary/mdictionary.pro b/src/mdictionary/mdictionary.pro index fd4b0bc..08d3050 100644 --- a/src/mdictionary/mdictionary.pro +++ b/src/mdictionary/mdictionary.pro @@ -38,7 +38,8 @@ SOURCES += gui/main.cpp \ gui/TranslationView.cpp \ gui/DBusAdapter.cpp \ gui/NotifyManager.cpp \ - gui/SpinBox.cpp + gui/SpinBox.cpp \ + gui/DictTypeModel.cpp HEADERS += gui/MainWindow.h \ backbone/ConfigGenerator.h \ @@ -69,7 +70,8 @@ HEADERS += gui/MainWindow.h \ ../include/DictDialog.h \ gui/DBusAdapter.h \ gui/NotifyManager.h \ - gui/SpinBox.h + gui/SpinBox.h \ + gui/DictTypeModel.h RESOURCES += ../../data/gui.qrc @@ -82,7 +84,13 @@ OTHER_FILES += \ qml/AboutWidget.qml \ qml/SearchBarWidget.qml \ qml/IconButton.qml \ - qml/MyTextLineEdit.qml + qml/MyTextLineEdit.qml \ + qml/DictListDelegate.qml \ + qml/DictTypeListDelegate.qml \ + qml/WordListDelegate.qml \ + qml/ElementsListView.qml \ + qml/DictTypeListView.qml \ + qml/DictTypeSelectDialog.qml target.path = $$BIN_DIR INSTALLS += target @@ -177,6 +185,12 @@ unix { qmls.files += ./qml/SearchBarWidget.qml qmls.files += ./qml/IconButton.qml qmls.files += ./qml/MyTextLineEdit.qml + qmls.files += ./qml/DictListDelegate.qml + qmls.files += ./qml/DictTypeListDelegate.qml + qmls.files += ./qml/WordListDelegate.qml + qmls.files += ./qml/ElementsListView.qml + qmls.files += ./qml/DictTypeListView.qml + qmls.files += ./qml/DictTypeSelectDialog.qml } INSTALLS += desktop icon64 shared service css css_images qmls diff --git a/src/mdictionary/qml/DictListDelegate.qml b/src/mdictionary/qml/DictListDelegate.qml new file mode 100644 index 0000000..15b01c6 --- /dev/null +++ b/src/mdictionary/qml/DictListDelegate.qml @@ -0,0 +1,6 @@ +import Qt 4.7 + +Rectangle { + width: 100 + height: 62 +} diff --git a/src/mdictionary/qml/DictTypeListDelegate.qml b/src/mdictionary/qml/DictTypeListDelegate.qml new file mode 100644 index 0000000..e2ebbe9 --- /dev/null +++ b/src/mdictionary/qml/DictTypeListDelegate.qml @@ -0,0 +1,5 @@ +import Qt 4.7 + +Text { + text: type +} diff --git a/src/mdictionary/qml/DictTypeListView.qml b/src/mdictionary/qml/DictTypeListView.qml new file mode 100644 index 0000000..9d83416 --- /dev/null +++ b/src/mdictionary/qml/DictTypeListView.qml @@ -0,0 +1,8 @@ +import Qt 4.7 + +ElementsListView{ + anchors.fill: parent + delegate: DictTypeListDelegate{} + model: dictTypeModel + focus: true +} diff --git a/src/mdictionary/qml/DictTypeSelectDialog.qml b/src/mdictionary/qml/DictTypeSelectDialog.qml new file mode 100644 index 0000000..5bf3b73 --- /dev/null +++ b/src/mdictionary/qml/DictTypeSelectDialog.qml @@ -0,0 +1,33 @@ +import Qt 4.7 + +Rectangle { + SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } + + id: rectangle1 + //width: (helloText.width > logo.width) ? (helloText.width) : (logo.width) + //height: logo.height + helloText.height + color: myPalette.window + anchors.fill: parent + + DictTypeListView{ + id: dictTypeList + + } + +// Image { +// id: logo +// source: "qrc:/icons/logo/mdictionary.png" +// width: 240 +// height: 200 +// anchors.horizontalCenter: parent.horizontalCenter +// fillMode: Image.PreserveAspectFit +// anchors.top: parent.top +// } + +// Text { +// id: helloText +// text: qsTr("

Welcome in mDictionary!

") +// anchors.bottom: parent.bottom +// } + +} diff --git a/src/mdictionary/qml/ElementsListView.qml b/src/mdictionary/qml/ElementsListView.qml new file mode 100644 index 0000000..d365763 --- /dev/null +++ b/src/mdictionary/qml/ElementsListView.qml @@ -0,0 +1,6 @@ +import Qt 4.7 + +ListView { + property int selectedElement: -1 + +} diff --git a/src/mdictionary/qml/WordListDelegate.qml b/src/mdictionary/qml/WordListDelegate.qml new file mode 100644 index 0000000..15b01c6 --- /dev/null +++ b/src/mdictionary/qml/WordListDelegate.qml @@ -0,0 +1,6 @@ +import Qt 4.7 + +Rectangle { + width: 100 + height: 62 +} -- 1.7.9.5