qDebug() << "Database error: " << db.lastError().text() << endl;
return ;
}
+ translation->setBookmark(true);
QSqlQuery cur(db);
cur.prepare("insert into bookmarks values (?,?)");
cur.addBindValue(translation->key());
QString("</p></font>");
setWindowTitle(tr("About"));
- mainLayout = new QVBoxLayout;
+ mainLayout = new QVBoxLayout(this);
#ifndef Q_WS_MAEMO_5
- scrollLayout = new QVBoxLayout;
- scroll = new QScrollArea;
+ scrollLayout = new QVBoxLayout(this);
+ scroll = new QScrollArea(this);
w = new QWidget(this);
#endif
- imageLabel = new QLabel;
- mainLabel = new QLabel;
- licenseLabel = new QLabel;
+ imageLabel = new QLabel(this);
+ mainLabel = new QLabel(this);
+ licenseLabel = new QLabel(this);
QImage img(":/icons/logo/mdictionary.png");
{
setWindowTitle(tr("Bookmarks"));
- verticalLayout = new QVBoxLayout;
+ verticalLayout = new QVBoxLayout(this);
setLayout(verticalLayout);
- showAllBookmarksPushButton = new QPushButton(tr("Show all bookmarks"));
+ showAllBookmarksPushButton = new QPushButton(tr("Show all bookmarks"),this);
removeAllBookmarksPushButton =
- new QPushButton(tr("Remove all bookmarks"));
+ new QPushButton(tr("Remove all bookmarks"),this);
verticalLayout->addWidget(showAllBookmarksPushButton);
verticalLayout->addWidget(removeAllBookmarksPushButton);
setWindowTitle(tr("Dictionaries"));
this->guiInterface = parent;
- verticalLayout = new QVBoxLayout;
+ verticalLayout = new QVBoxLayout(this);
setLayout(verticalLayout);
- dictListWidget = new QListWidget;
+ dictListWidget = new QListWidget(this);
verticalLayout->addWidget(dictListWidget);
dictListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
dictListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- addNewDictButton = new QPushButton(tr("Add"));
- removeDictButton = new QPushButton(tr("Remove"));
- settingsButton = new QPushButton(tr("Settings"));
+ addNewDictButton = new QPushButton(tr("Add"),this);
+ removeDictButton = new QPushButton(tr("Remove"),this);
+ settingsButton = new QPushButton(tr("Settings"),this);
removeDictButton->setEnabled(false);
settingsButton->setEnabled(false);
- buttonGroup = new QHBoxLayout;
+ buttonGroup = new QHBoxLayout(this);
buttonGroup->addWidget(addNewDictButton);
buttonGroup->addWidget(removeDictButton);
while(i.hasNext()) {
i.next();
- QListWidgetItem* item = new QListWidgetItem;
+ QListWidgetItem* item = new QListWidgetItem();
QString name = i.key()->langFrom() + " - " + i.key()->langTo() + " (" +
i.key()->type() + " " + i.key()->name() + ")";
item->setText(name);
this->plugins = plugins;
- verticalLayout = new QVBoxLayout;
+ verticalLayout = new QVBoxLayout(this);
setLayout(verticalLayout);
- pluginsListWidget = new QListWidget;
+ pluginsListWidget = new QListWidget(this);
verticalLayout->addWidget(pluginsListWidget);
HistoryListDialog::HistoryListDialog(QStringList words, QWidget *parent):
QDialog(parent)
{
- verticalLayout = new QVBoxLayout;
+ verticalLayout = new QVBoxLayout(this);
setLayout(verticalLayout);
oryginalList = words;
- historyListWidget = new QListWidget;
+ historyListWidget = new QListWidget(this);
verticalLayout->addWidget(historyListWidget);
for(int i=0; i<words.count(); i++) {
translationWidget = new TranslationWidget(this);
- mainLayout = new QVBoxLayout;
- QWidget* w = new QWidget;
+ mainLayout = new QVBoxLayout(this);
+ QWidget* w = new QWidget(this);
w->setLayout(mainLayout);
setCentralWidget(w);
- menuBar = new QMenuBar;
+ menuBar = new QMenuBar(this);
setMenuBar(menuBar);
- searchBarWidget = new SearchBarWidget;
+ searchBarWidget = new SearchBarWidget(this);
- wordListWidget = new WordListWidget;
+ wordListWidget = new WordListWidget(this);
- welcomeScreenWidget = new WelcomeScreenWidget;
+ welcomeScreenWidget = new WelcomeScreenWidget(this);
#ifdef Q_WS_MAEMO_5
MenuWidget::MenuWidget(QWidget *parent) :
QWidgetAction(parent) {
+ //creating custom tab widget, and sets style sheet to have centered tabs
+ tabWidget = new MenuTabWidget(this);
//creates custom tab widget, and sets style sheet to have centered tabs
tabWidget = new MenuTabWidget();
tabWidget->setStyleSheet("QTabWidget::tab-bar {alignment: center;}");
#endif
- horizontalLayout = new QHBoxLayout();
- verticalLayout = new QVBoxLayout();
+ horizontalLayout = new QHBoxLayout(this);
+ verticalLayout = new QVBoxLayout(this);
- searchPushButton = new QPushButton(tr("Search"));
+ searchPushButton = new QPushButton(tr("Search"),this);
searchPushButton->setMinimumWidth(125);
- searchWordLineEdit = new QLineEdit();
+ searchWordLineEdit = new QLineEdit(this);
searchWordLineEdit->setMinimumWidth(250);
#ifndef Q_WS_MAEMO_5
//create layout for lineEdit to have clear button on it
- QHBoxLayout* lineEditLayout = new QHBoxLayout;
+ QHBoxLayout* lineEditLayout = new QHBoxLayout(this);
searchWordLineEdit->setLayout(lineEditLayout);
- clearSearchWordToolButton = new QToolButton();
+ clearSearchWordToolButton = new QToolButton(this);
#ifdef Q_WS_MAEMO_5
clearSearchWordToolButton->setIcon(QIcon::fromTheme("general_stop"));
//tool buttons will have size 2 times smaller
#endif
- historyNextToolButton = new QToolButton();
+ historyNextToolButton = new QToolButton(this);
#ifdef Q_WS_MAEMO_5
historyNextToolButton->setIcon(
generateIcon(QIcon::fromTheme("general_forward")));
- historyPrevToolButton = new QToolButton();
+ historyPrevToolButton = new QToolButton(this);
#ifdef Q_WS_MAEMO_5
historyPrevToolButton->setIcon(
generateIcon(QIcon::fromTheme("general_back")));
- historyShowToolButton = new QToolButton();
+ historyShowToolButton = new QToolButton(this);
#ifdef Q_WS_MAEMO_5
historyShowToolButton->setIcon(
generateIcon(QIcon::fromTheme("general_back"), 90));
fullScreenToolButton->sizeHint().height()*2);
#endif*/
-
searchingProgressBar = new QProgressBar();
//progress bar has minimum and maximum values set to 0, which will effect
//with "I'm alive" bar
setWindowTitle(tr("Settings"));
- verticalLayout = new QVBoxLayout;
+ verticalLayout = new QVBoxLayout(this);
setLayout(verticalLayout);
- historySizeSpinBox = new QSpinBox;
- searchResultSizeSpinBox = new QSpinBox;
+ historySizeSpinBox = new QSpinBox(this);
+ searchResultSizeSpinBox = new QSpinBox(this);
- spinBoxesFormLayout = new QFormLayout;
+ spinBoxesFormLayout = new QFormLayout(this);
spinBoxesFormLayout->addRow(tr("Search result size"),
searchResultSizeSpinBox);
verticalLayout->addLayout(spinBoxesFormLayout);
- checkBoxesLabel = new QLabel(tr("Search in:"));
+ checkBoxesLabel = new QLabel(tr("Search in:"),this);
- searchInBookmarksCheckBox = new QCheckBox(tr("Bookmarks"));
- searchInDictionariesCheckBox = new QCheckBox(tr("Dictionaries"));
+ searchInBookmarksCheckBox = new QCheckBox(tr("Bookmarks"),this);
+ searchInDictionariesCheckBox = new QCheckBox(tr("Dictionaries"),this);
verticalLayout->addSpacing(20);
verticalLayout->addWidget(checkBoxesLabel);
trans += t + "\n";
}
- // qDebug()<<trans;
+ QImage image(":icons/16x16/staron.png");
+ QTextDocument *document = textEdit->document();
+ document->addResource(QTextDocument::ImageResource, QUrl("mydata://image.png"), QVariant(image));
trans=tr("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") + tr("\n <ar>") + trans + tr("\n </ar>");
trans=XslConversion(trans);
+
textEdit->insertHtml(trans);
- // textEdit->setPlainText(trans);
- textEdit->repaint(this->rect());
+// textEdit->setPlainText(trans);
+ textEdit->repaint(this->rect());
update(this->rect());
Q_EMIT updateSize();
void TranslationWidget::initializeUI() {
- textEdit = new TranslationTextEdit;
+ textEdit = new TranslationTextEdit(this);
textEdit->setReadOnly(true);
resizer = new TranslationWidgetAutoResizer(textEdit);
connect(this, SIGNAL(updateSize()),
resizer, SLOT(textEditChanged()));
- QWidget*w = new QWidget;
+ QWidget*w = new QWidget(this);
verticalLayout = new QVBoxLayout(w);
verticalLayout->addWidget(textEdit);
</xsl:template>
<xsl:template match="info">
+<<<<<<< HEAD
+ <!-- <xsl:variable name="path" select="info/@path"/>-->
+ <tr bgcolor="#99FF99">
+ <th>
+ <xsl:if test="@bookmark = 'true'">
+ <img src="mydata://image.png"/>
+ </xsl:if>
+ <xsl:value-of select="."/> <!-- <img src="{$path}"/> -->
+ </th>
+=======
<tr>
<th class="info"><xsl:value-of select="."/></th>
+>>>>>>> 3e7118bfec64f44b11205ca836cb1a82c725d123
</tr>
</xsl:template>
<xsl:template match="key">
+<<<<<<< HEAD
+ <tr bgcolor="#99CCFF">
+ <th><xsl:value-of select="."/></th>
+ </tr>
+=======
<tr>
<th class="key"><xsl:value-of select="."/></th>
</tr>
+>>>>>>> 3e7118bfec64f44b11205ca836cb1a82c725d123
</xsl:template>
<xsl:template match="t">
#include <QString>
#include <QHash>
#include "CommonDictInterface.h"
+#include <QDebug>
class CommonDictInterface;
Settings(const Settings* set) {
_settings = QHash<QString, QString>(set->_settings);
}
+ ~Settings(){}
/*! \returns value fo given key
\param key
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("&","&");
-
- 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("&","&");
}
void TranslationXdxf::setKey(QString _key) {
//! 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;}
setLayout(verticalLayout);
setWindowTitle(tr("Caching dictionary, please wait"));
- cachingProgressBar = new QProgressBar;
+ cachingProgressBar = new QProgressBar(this);
cachingProgressBar->setMinimum(0);
cachingProgressBar->setMaximum(100);
cachingProgressBar->setTextVisible(true);
- cancelButton = new QPushButton(tr("Cancel"));
+ cancelButton = new QPushButton(tr("Cancel"),this);
- cachingLabel = new QLabel();
+ cachingLabel = new QLabel(this);
cachingLabel->hide();
Q_OBJECT
public:
explicit XdxfDictDialog(XdxfPlugin* plugin, QObject *parent = 0);
-
/*!
Shows add new xdxf dictionary dialog and returns settings of new dict
\param parent parent widget on which dialog will be displayed
XdxfLoadDialog::XdxfLoadDialog(QWidget *parent) :
QDialog(parent) {
- verticalLayout = new QVBoxLayout;
+ verticalLayout = new QVBoxLayout(this);
setLayout(verticalLayout);
setWindowTitle(tr("Add new XDXF dictionary"));
- browseLayout = new QHBoxLayout;
+ browseLayout = new QHBoxLayout(this);
verticalLayout->addLayout(browseLayout);
- browseButton = new QPushButton(tr("Browse"));
- browseLabel = new QLabel(tr("Dictionary file: not selected"));
+ browseButton = new QPushButton(tr("Browse"),this);
+ browseLabel = new QLabel(tr("Dictionary file: not selected"),this);
browseLayout->addWidget(browseLabel);
browseLayout->addWidget(browseButton,0, Qt::AlignRight);
- cacheLayout = new QHBoxLayout;
+ cacheLayout = new QHBoxLayout(this);
verticalLayout->addLayout(cacheLayout);
- cacheCheckBox = new QCheckBox(tr("Optimize for quicker searches (may take some time)"));
+ cacheCheckBox = new QCheckBox(tr("Optimize for quicker searches (may take some time)"),this);
cacheCheckBox->setChecked(true);
cacheLayout->addWidget(cacheCheckBox);
- addButton = new QPushButton(tr("Add"));
+ addButton = new QPushButton(tr("Add"),this);
verticalLayout->addWidget(addButton);
QDialog(parent)
{
this->plugin = plugin;
- verticalLayout = new QVBoxLayout;
+ verticalLayout = new QVBoxLayout(this);
setLayout(verticalLayout);
setWindowTitle(tr("XDXF Settings"));
- infoLabel = new QLabel;
+ infoLabel = new QLabel(this);
infoLabel->setText(tr("Plugin type: ") + plugin->type() +"\n" +
tr("From: ") + plugin->langFrom() + "\n" +
verticalLayout->addWidget(infoLabel);
- browseLayout = new QHBoxLayout;
+ browseLayout = new QHBoxLayout(this);
verticalLayout->addLayout(browseLayout);
- browseButton = new QPushButton(tr("Browse"));
+ browseButton = new QPushButton(tr("Browse"),this);
browseLabel = new QLabel(tr("Dictionary file: ") +
- plugin->settings()->value("path"));
+ plugin->settings()->value("path"),this);
browseLayout->addWidget(browseLabel);
browseLayout->addWidget(browseButton,0, Qt::AlignRight);
- cacheLayout = new QHBoxLayout;
+ cacheLayout = new QHBoxLayout(this);
verticalLayout->addLayout(cacheLayout);
- cacheCheckBox = new QCheckBox(tr("Cached"));
+ cacheCheckBox = new QCheckBox(tr("Cached"),this);
if(plugin->settings()->value("cached") == "true") {
cacheCheckBox->setChecked(true);
_generateCache = true;
cacheLayout->addWidget(cacheCheckBox);
- saveButton = new QPushButton(tr("Save settings"));
+ saveButton = new QPushButton(tr("Save settings"),this);
verticalLayout->addWidget(saveButton);
settings->setValue("generateCache", "false");
}
plugin->setSettings(settings);
- return NULL;
+ delete settings;
+ return 0;
}
- return NULL;
+ return 0;
}
#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("")),
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 {
_infoNote, this));
}
db.close();
- return translations.toList();
+ return translations.toList();
}
QList<Translation*> XdxfPlugin::searchWordListFile(QString word, int limit) {
cur.exec();
while(cur.next())
result += cur.value(0).toString();
+
db.close();
+
return result;
}
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;
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") {
// 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();
}
_settings->setValue("cache_path", cachePathN);
_settings->setValue("cached", "true");
+
db.close();
return true;
}
#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;
Q_INTERFACES(CommonDictInterface)
public:
XdxfPlugin(QObject *parent=0);
-
- virtual ~XdxfPlugin();
+ ~XdxfPlugin();
//! returns source language code iso 639-2
QString langFrom() const;
*/
DictDialog* dictDialog();
-
//! returns new, clean copy of plugin with setting set as in Settings*
CommonDictInterface* getNew(const Settings*) const;
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);
QString _type;
//! information about dictionary
QString _infoNote;
- QDialog *_loadDialog;
- QDialog *_settingsDialog;
//! path to dictionary file
QString path;
uint _hash;
//! number of words in dictionary
long _wordsCount;
- //! scans dictionary file to get information about it
- void getDictionaryInfo();
-
volatile bool stopped;
Settings *_settings;
XdxfDictDialog* _dictDialog;
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);
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"
#include <QtConcurrentRun>
#include <QFuture>
#include "../src/xdxfplugin.h"
+#include <QTime>
+#include <QDate>
+#include <QTextStream>
class XdxfTest: public QObject
{
void makeCache();
void searchCache();
void searchWordListCache();
+ void timeCache();
+ void timeFile();
};