bi change + completer in line edit
[mdictionary] / src / plugins / xdxf / XdxfDictSelectDialog.cpp
index d1575e4..42c1ca8 100644 (file)
@@ -32,9 +32,7 @@ XdxfDictSelectDialog::XdxfDictSelectDialog(QList<DownloadDict> dicts,
                                            QWidget *parent) :
                     QDialog(parent) {
 
-
     setWindowTitle(tr("Select dictionary"));
-
     //here removing already added dictionary
     for (int i = 0; i < dicts.size(); i++){
         if(QFile::exists(QDir::homePath() + "/.mdictionary/" + dicts[i].title() + ".xdxf")){
@@ -46,11 +44,37 @@ XdxfDictSelectDialog::XdxfDictSelectDialog(QList<DownloadDict> dicts,
 #ifndef Q_WS_MAEMO_5
     model2 = new DictsListModel(dicts, this);
     proxyModel2 = new DictsProxyListModel;
-    proxyModel2->setSourceModel(model2);
-    proxyModel2->setTo("Polish");
+    proxyModel2->setSourceModel(model2);;
     view= new QDeclarativeView();
     QDeclarativeContext* ctxt=view->rootContext();
     ctxt->setContextProperty("dictModel", proxyModel2);
+
+    QSet<QString> languagesFrom;
+    for(int i=0; i < model2->rowCount(QModelIndex()); i++)
+        languagesFrom.insert(model2->data(model2->index(i, 0),DictsListModel::FromRole).toString());
+    languagesFrom.remove(QString());
+    QStringList langFromList = languagesFrom.toList();
+    qSort(langFromList);
+    QList<QString> langListFrom;
+    langListFrom.append(tr("Any"));
+    foreach(QString lang,langFromList)
+        langListFrom.append(lang);
+    fromModel = new ComboBoxModel(langListFrom);
+    ctxt->setContextProperty("fromModell", fromModel);
+
+    QSet<QString> languagesTo;
+    for(int i=0; i < model2->rowCount(QModelIndex()); i++)
+        languagesTo.insert(model2->data(model2->index(i, 0),DictsListModel::ToRole).toString());
+    languagesTo.remove(QString());
+    QStringList langToList = languagesTo.toList();
+    qSort(langToList);
+    QList<QString> langListTo;
+    langListTo.append(tr("Any"));
+    foreach(QString lang,langToList)
+        langListTo.append(lang);
+    toModel = new ComboBoxModel(langListTo);
+    ctxt->setContextProperty("toModell", toModel);
+
     view->setSource(QUrl::fromLocalFile("/usr/share/mdictionary/qml/TableWidget.qml"));
     view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
     view->setAlignment(Qt::AlignCenter);
@@ -58,12 +82,16 @@ XdxfDictSelectDialog::XdxfDictSelectDialog(QList<DownloadDict> dicts,
     mainLayout = new QVBoxLayout;
     mainLayout->addWidget(view);
     this->setLayout(mainLayout);
-    proxyModel2->setTo("English");
 
     QGraphicsObject *rootObject = view->rootObject();
 
     connect(rootObject,SIGNAL(dictLink(QString)),
             this,SLOT(itemClicked(QString)));
+    connect(rootObject,SIGNAL(fromChange(QString)),
+            this,SLOT(fromChange(QString)));
+    connect(rootObject,SIGNAL(toChange(QString)),
+            this,SLOT(toChange(QString)));
+
 #else
 
     layout = new QVBoxLayout;
@@ -135,6 +163,19 @@ XdxfDictSelectDialog::XdxfDictSelectDialog(QList<DownloadDict> dicts,
     #endif
 }
 
+void XdxfDictSelectDialog::toChange(QString lang){
+    if(lang!=tr("Any"))
+        proxyModel2->setTo(lang);
+    else
+        proxyModel2->setTo("");
+}
+
+void XdxfDictSelectDialog::fromChange(QString lang){
+    if(lang!=tr("Any"))
+        proxyModel2->setFrom(lang);
+    else
+        proxyModel2->setFrom("");
+}
 
 void XdxfDictSelectDialog::initializeDicts() {
     //scan of all languages of dictionaries, using QSet to get only distinct languages
@@ -202,7 +243,9 @@ void XdxfDictSelectDialog::itemClicked(QString link) {
 }
 
 void XdxfDictSelectDialog::itemClicked(QModelIndex index) {
-#ifdef Q_WS_MAEMO_5
+#ifndef Q_WS_MAEMO_5
+    index;
+#else
     _link = index.model()->data(index, Qt::UserRole).toString();
     accept();
 #endif