add information about bookmark to translation (in toHtml())
authorJakub Jaszczynski <j.j.jaszczynski@gmail.com>
Mon, 23 Aug 2010 09:44:28 +0000 (11:44 +0200)
committerJakub Jaszczynski <j.j.jaszczynski@gmail.com>
Mon, 23 Aug 2010 09:44:28 +0000 (11:44 +0200)
trunk/src/base/backbone/Bookmarks.cpp
trunk/src/base/gui/TranslationWidget.cpp
trunk/src/base/xsl.xsl
trunk/src/plugins/xdxf/src/TranslationXdxf.cpp
trunk/src/plugins/xdxf/src/TranslationXdxf.h
trunk/src/plugins/xdxf/src/xdxfplugin.cpp
trunk/src/plugins/xdxf/src/xdxfplugin.h
trunk/src/plugins/xdxf/tests/test.cpp
trunk/src/plugins/xdxf/tests/test.h

index 2f20ea9..3770eb6 100644 (file)
@@ -51,6 +51,7 @@ void Bookmarks::add(Translation* translation) {
         qDebug() << "Database error: " << db.lastError().text() << endl;
         return ;
     }
+    translation->setBookmark(true);
     QSqlQuery cur(db);
     cur.prepare("insert into bookmarks values (?,?)");
     cur.addBindValue(translation->key());
index 1bcbf1e..1f99460 100644 (file)
@@ -71,11 +71,14 @@ void TranslationWidget::show(QStringList translations) {
         trans += t + "\n";
     }
 
- //   qDebug()<<trans;
+//    qDebug()<<trans;
 
     trans=tr("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") + tr("\n <ar>") + trans + tr("\n </ar>");
     trans=XslConversion(trans);
     textEdit->insertHtml(trans);
+
+    qDebug()<<trans;
+
  //   textEdit->setPlainText(trans);
 
     textEdit->repaint(this->rect());
index 54c041f..31f549e 100644 (file)
 <xsl:template match="info">
        <!-- <xsl:variable name="path" select="info/@path"/>-->
        <tr bgcolor="#99FF99">
-       <th><xsl:value-of select="."/> <!-- <img src="{$path}"/> --></th>
+               <th>            
+               <xsl:if test="@bookmark = 'true'">
+                       BOOKMARK:                       
+               </xsl:if>
+               <xsl:value-of select="."/> <!-- <img src="{$path}"/> -->
+               </th>
        </tr>
 </xsl:template>
 
 <xsl:template match="key">
        <tr bgcolor="#99CCFF">
-       <th><xsl:value-of select="."/></th>             
-        </tr>
+       <th><xsl:value-of select="."/></th>                     
+       </tr>
 </xsl:template> 
 
 <xsl:template match="t">
index 39caf28..0a1246b 100644 (file)
@@ -43,15 +43,17 @@ QString TranslationXdxf::dictionaryInfo() const {
     return _dictionaryInfo;
 }
 
-QString TranslationXdxf::toHtml() const {
+QString TranslationXdxf::toHtml() const { 
     QString result("");
-    
     if(!xdxfPlugin)
         return result;
-    result+="<dict>" + _dictionaryInfo + xdxfPlugin->search(_key) + "</dict>";
-    result.replace("&","&amp;");
-    
-    return result;
+    result=result + "<dict>" + "<info";
+    if(isBookmark())
+        result+= " bookmark=\"true\" ";
+    else
+        result+= " bookmark=\"false\" ";
+    result+= _dictionaryInfo + "</info>" + xdxfPlugin->search(_key) + "</dict>";
+    return result.replace("&","&amp;");
 }
 
 void TranslationXdxf::setKey(QString _key) {
index 31a5193..8236e39 100644 (file)
@@ -50,6 +50,10 @@ public:
     //! sets information about dictionary
     void setDictionaryInfo(QString);
 
+    //! \retrun whether given translation is taken from bookmarks
+    bool isBookmark() const {
+        return _bookmark;
+   }
 
     //! returns coresponding dict object
     uint dict() const {return _dictHash;}
index 49f9bf6..ae3549e 100644 (file)
 
 #include "xdxfplugin.h"
 #include <QDebug>
-#include <QFile>
-#include <QXmlStreamReader>
-#include <QtPlugin>
-#include "TranslationXdxf.h"
-#include "../../../includes/settings.h"
 
 XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
                     _langFrom(tr("")), _langTo(tr("")),_name(tr("")),
@@ -50,9 +45,11 @@ XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
 
 XdxfPlugin::~XdxfPlugin()
 {
-    qDebug()<<"/n /n destruktor";
-    if(!db.connectionName().isEmpty())
-        db.removeDatabase(_type+path);
+//  QString connection(db.connectionName());
+//   db.close();
+//  QSqlDatabase::removeDatabase(connection);
+
+    delete _settings;
 }
 
 QString XdxfPlugin::langFrom() const {   
@@ -125,7 +122,7 @@ QList<Translation*> XdxfPlugin::searchWordListCache(QString word, int limit) {
                         _infoNote, this));
         }
         db.close();
-       return translations.toList();
+    return translations.toList();
 }
 
 QList<Translation*> XdxfPlugin::searchWordListFile(QString word, int limit) {
@@ -201,7 +198,9 @@ QString XdxfPlugin::searchCache(QString key) {
     cur.exec();
     while(cur.next())
         result += cur.value(0).toString();
+
     db.close();
+
     return result;
 
 }
@@ -211,13 +210,10 @@ QString XdxfPlugin::searchFile(QString key) {
     QFile dictionaryFile(path);
     QString resultString("");
     if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
-        qDebug()<<"Error: could not open file";
+        qDebug()<<"Error: could not open file when search";
         return "";
     }
     QXmlStreamReader reader(&dictionaryFile);
-
-
-
     QString a;
 
     bool match =false;
@@ -286,9 +282,8 @@ CommonDictInterface* XdxfPlugin::getNew(const Settings *settings) const {
 
         a=a+1;
         plugin->db_name = plugin->_settings->value("type")
-               + plugin->_settings->value("path");
-//        if(!plugin->db.connectionName().isEmpty() || settings->value("generateCache")=="true")
-            plugin->db = QSqlDatabase::addDatabase("QSQLITE", plugin->db_name);
+                         + plugin->_settings->value("path");
+        plugin->db = QSqlDatabase::addDatabase("QSQLITE", plugin->db_name);
 
         if(settings->value("cached").isEmpty() &&
            settings->value("generateCache") == "true") {
@@ -371,9 +366,7 @@ void XdxfPlugin::getDictionaryInfo() {
 //  qDebug()<<QPixmap(test).save(initialPath,format.toAscii());
 //  qDebug()<<QPixmap("/home/jakub/star.jpg").save(initialPath,format.toAscii());
 
-    _infoNote="<info path=\""+initialPath+"\">"+"\n" + _name + " [" + _langFrom + "-" + _langTo + "] "+ "(" + _type + ")"  + "</info>";
-
-
+    _infoNote="path=\""+initialPath+"\">"+"\n" + _name + " [" + _langFrom + "-" + _langTo + "] "+ "(" + _type + ")";
 
     dictionaryFile.close();
 }
@@ -527,6 +520,7 @@ bool XdxfPlugin::makeCache(QString dir) {
     _settings->setValue("cache_path", cachePathN);
     _settings->setValue("cached", "true");
 
+
     db.close();
     return true;
 }
index d678a31..e413e2c 100644 (file)
@@ -25,7 +25,7 @@
 #ifndef XDXFPLUGIN_H
 #define XDXFPLUGIN_H
 
-#include "../../../includes/CommonDictInterface.h"
+
 #include <QObject>
 #include <QDialog>
 #include <QRegExp>
 #include <QSqlQuery>
 #include <QSqlDatabase>
 #include <QSqlError>
+#include <QFile>
+#include <QXmlStreamReader>
+#include <QtPlugin>
+
+#include "../../../includes/CommonDictInterface.h"
+#include "../../../includes/settings.h"
 #include "XdxfDictDialog.h"
 #include "XdxfCachingDialog.h"
+#include "TranslationXdxf.h"
 
 class TranslationXdxf;
 
@@ -44,8 +51,7 @@ class XdxfPlugin : public CommonDictInterface
     Q_INTERFACES(CommonDictInterface)
 public:
     XdxfPlugin(QObject *parent=0);
-
-    virtual ~XdxfPlugin();
+    ~XdxfPlugin();
 
     //! returns source language code iso 639-2
     QString langFrom() const;
@@ -67,7 +73,6 @@ public:
       */
     DictDialog* dictDialog();
 
-
     //! returns new, clean copy of plugin with setting set as in Settings*
     CommonDictInterface* getNew(const Settings*) const;
 
@@ -130,6 +135,9 @@ private:
     QList<Translation*> searchWordListFile(QString word, int limit=0);
     QString searchFile(QString key);
     QString searchCache(QString key);
+    //! scan dictionary file to get information about it
+    void getDictionaryInfo();
+
     int countWords();
     bool makeCache(QString dir);
 
@@ -143,8 +151,6 @@ private:
     QString _type;
     //! information about dictionary
     QString _infoNote;
-    QDialog *_loadDialog;
-    QDialog *_settingsDialog;
     //! path to dictionary file
     QString path;
     uint _hash;
@@ -155,8 +161,6 @@ private:
     //! number of words in dicrionary
     long _wordsCount;
 
-    //! scan dictionary file to get information about it
-    void getDictionaryInfo();
 
     volatile bool stopped;
     Settings *_settings;
index efc88f5..58aeb02 100644 (file)
@@ -165,7 +165,8 @@ void XdxfTest::stop() {
     CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
 
     QString string("*");
-    QFuture<QList<Translation*> > future = QtConcurrent::run(xdxfPlugin, &CommonDictInterface::searchWordList, string, 10);
+    QFuture<QList<Translation*> > future = QtConcurrent::run(xdxfPlugin,
+                        &CommonDictInterface::searchWordList, string, 10);
     QList<Translation*> te5 = future.result();
     QCOMPARE(te5.size(), 9);
 
@@ -185,5 +186,95 @@ void XdxfTest::langFrom() {
     delete xdxfPlugin;
 }
 
+void XdxfTest::timeCache()
+{
+    QTime timer;
+    QDate date;
+    QFile File("../tests/time.xml");
+    if(!File.open(QFile::ReadWrite | QFile::Text)) {
+        qDebug()<<"Error: could not open file";
+        return;
+    }
+    QTextStream out(&File);
+    while(!out.atEnd())
+        out.seek(out.pos()+1);
+
+    timer.start();
+    XdxfPlugin xdxfPluginB(this);
+    Settings *settings=new Settings;
+    settings->setValue("path","../../../../../../dict.xdxf");
+    settings->setValue("generateCache", "true");
+    CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
+
+    out<<"\n<date>" + date.currentDate().toString("dd.MM.yyyy") +" ";
+    out<<timer.currentTime().toString(Qt::TextDate) + "</date>";
+    out<<"\n<type> Cache </type> <time>" << timer.elapsed();
+    out<<"</time>";
+
+    timer.start();
+    xdxfPlugin->search("Bantu");
+    out<<"\n<type> SearchCache-begin </type> <time>" << timer.elapsed();
+    out<< "</time>";
+
+    timer.start();
+    xdxfPlugin->search("level");
+    out<<"\n<type> SearchCache-midle </type> <time>" << timer.elapsed();
+    out<< "</time>";
+
+    timer.start();
+    xdxfPlugin->search("zoril");
+    out<<"\n<type> SearchCache-end </type> <time>" << timer.elapsed();
+    out<< "</time>";
+
+    timer.start();
+    xdxfPlugin->searchWordList("level");
+    out<<"\n<type> SearchWorlListCache </type> <time>" << timer.elapsed();
+    out<< "</time>";
+
+    File.close();
+}
+
+void XdxfTest::timeFile()
+{
+    QTime timer;
+    QDate date;
+    QFile File("../tests/time.xml");
+    if(!File.open(QFile::ReadWrite | QFile::Text)) {
+        qDebug()<<"Error: could not open file";
+        return;
+    }
+    QTextStream out(&File);
+    while(!out.atEnd())
+        out.seek(out.pos()+1);
+
+    XdxfPlugin xdxfPluginB(this);
+    Settings *settings=new Settings;
+    settings->setValue("path","../../../../../../dict.xdxf");
+    CommonDictInterface *xdxfPlugin = xdxfPluginB.getNew(settings);
+
+    timer.start();
+    xdxfPlugin->search("Bantu");
+    out<<"\n<type> SearchFile-begin </type> <time>" << timer.elapsed();
+    out << "</time>";
+
+    timer.start();
+    xdxfPlugin->search("level");
+    out<<"\n<type> SearchFile-midle </type> <time>" << timer.elapsed();
+    out << "</time>";
+
+    timer.start();
+    xdxfPlugin->search("zoril");
+    out<<"\n<type> SearchFile-end </type> <time>" << timer.elapsed();
+    out << "</time>";
+
+    timer.start();
+    xdxfPlugin->searchWordList("level");
+    out<<"\n<type> SearchWordListFile </type> <time>" << timer.elapsed();
+    out<< "</time>\n";
+
+    File.close();
+}
+
+
 QTEST_MAIN(XdxfTest)
 //#include "testqstring.moc"
index 100b171..70f540c 100644 (file)
@@ -29,6 +29,9 @@
 #include <QtConcurrentRun>
 #include <QFuture>
 #include "../src/xdxfplugin.h"
+#include <QTime>
+#include <QDate>
+#include <QTextStream>
 
  class XdxfTest: public QObject
  {
@@ -44,6 +47,8 @@
      void makeCache();
      void searchCache();
      void searchWordListCache();
+     void timeCache();
+     void timeFile();
  };