SearchBarWidget::SearchBarWidget(QWidget *parent) : QWidget(parent) {
- qDebug()<<"test1";
+
+ completerModel = new QStringList;
+ lineEditCompleter = new QCompleter(this);
+ lineEditCompleter->setModel(new QStringListModel(*completerModel));
+ lineEditCompleter->setCaseSensitivity(Qt::CaseInsensitive);
+ lineEditCompleter->setCompletionMode(QCompleter::InlineCompletion);
+
#ifndef Q_WS_MAEMO_5
this->setMaximumHeight(50);
busyTimer=new QTimer;
progressBar->hide();
view= new QDeclarativeView();
+ ctxt = view->rootContext();
+
view->setSource(QUrl::fromLocalFile("/usr/share/mdictionary/qml/SearchBarWidget.qml"));
view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
view->setAlignment(Qt::AlignCenter);
this, SIGNAL(historyPrev()));
connect(rootObject, SIGNAL(historyShowToolButtonClicked()),
this, SLOT(showHistoryButtonClicked()));
+ connect(rootObject, SIGNAL(textChange(QString)),
+ this, SLOT(textChange(QString)));
+ connect(rootObject, SIGNAL(nextCompleter()),
+ this, SLOT(nextCompleter()));
+ connect(rootObject, SIGNAL(prevCompleter()),
+ this, SLOT(prevCompleter()));
connect(this, SIGNAL(progresSetMax(QVariant)),
rootObject2, SLOT(setMax(QVariant)));
connect(this, SIGNAL(setLineEditEnables(QVariant)),
rootObject, SLOT(setEnableLineEdit(QVariant)));
+ connect(this, SIGNAL(setCompleterText(QVariant)),
+ rootObject, SLOT(setCompleterText(QVariant)));
+
connect(busyTimer, SIGNAL(timeout()),
this, SLOT(updateBusyTimer()));
emit setEnableHistoryShow(false);
emit setEnableHistoryPrev(false);
- completerModel = new QStringListModel(this);
connect(&delayTimer, SIGNAL(timeout()),
this, SLOT(delaySearchTimeout()));
connect(&delayTimer, SIGNAL(timeout()),
this, SLOT(delaySearchTimeout()));
-
searchWordLineEdit->setFocus();
#endif
}
+void SearchBarWidget::textChange(QString text){
+ QLineEdit line;
+ QString toSend="";
+ QString tempString;
+ actualString=text;
+ completerActualList.clear();
+
+ line.setCompleter(lineEditCompleter);
+ line.completer()->setCompletionPrefix(text);
+ for (int i = 0; lineEditCompleter->setCurrentRow(i); i++)
+ completerActualList.append(lineEditCompleter->currentCompletion());
+
+ completerActualList.sort();
+ if(completerActualList.contains(preferedCompliter)){
+ tempString = preferedCompliter;
+ toSend = tempString.remove(0,text.size());
+ emit setCompleterText(toSend);
+ }
+ else if(completerActualList.size()>0 && text.size()>0){
+ toSend = completerActualList.at(0);
+ preferedCompliter= toSend;
+ toSend=toSend.remove(0,text.size());
+ if(toSend.size()>0)
+ emit setCompleterText(toSend);
+ else if(completerActualList.size()>1){
+ toSend = completerActualList.at(1);
+ preferedCompliter= toSend;
+ toSend=toSend.remove(0,text.size());
+ emit setCompleterText(toSend);
+ }
+ }
+ else{
+ preferedCompliter="";
+ emit setCompleterText(toSend);
+ }
+}
+
+void SearchBarWidget::prevCompleter(){
+ QString tempString;
+ if(!preferedCompliter.isEmpty()){
+ int index = completerActualList.indexOf(preferedCompliter);
+ qDebug()<<"index"<<index<<"size"<<completerActualList.size()<<"+1";
+ if(index!=-1 && completerActualList.size()>index+1){
+ preferedCompliter = completerActualList.at(index+1);
+ tempString=preferedCompliter;
+ QString toSend = tempString.remove(0,actualString.size());
+ emit setCompleterText(toSend);
+ }
+ }
+}
+
+void SearchBarWidget::nextCompleter(){
+ QString tempString;
+ if(!preferedCompliter.isEmpty()){
+ int index = completerActualList.indexOf(preferedCompliter);
+ if(index>0){
+ preferedCompliter = completerActualList.at(index-1);
+ tempString=preferedCompliter;
+ QString toSend = tempString.remove(0,actualString.size());
+ emit setCompleterText(toSend);
+ }
+ }
+}
+
+
QIcon SearchBarWidget::generateIcon(QIcon original, qreal rotation) {
qDebug()<<"test2";
QPixmap p = original.pixmap(64);
searchWordLineEdit = new QLineEdit;
searchWordLineEdit->setMinimumWidth(250);
- completerModel = new QStringListModel(this);
-
- lineEditCompleter = new QCompleter(searchWordLineEdit);
- lineEditCompleter->setModel(completerModel);
- lineEditCompleter->setCaseSensitivity(Qt::CaseInsensitive);
- lineEditCompleter->setCompletionMode(QCompleter::InlineCompletion);
searchWordLineEdit->setCompleter(lineEditCompleter);
#ifndef Q_WS_MAEMO_5
}
void SearchBarWidget::search(QString word) {
- qDebug()<<"test7";
- qDebug()<<word;
if(!busy && !word.isEmpty()) {
- completerModel->insertRow(completerModel->rowCount());
- QModelIndex index=completerModel->index(completerModel->rowCount() -1);
- completerModel->setData(index, word);
-
+ while(word.lastIndexOf(" ")==word.size()-1 && word.size()>0)
+ word=word.remove(word.size()-1,1);
+ if(!completerModel->contains(word))
+ completerModel->append(word);
+ QAbstractItemModel *temp=lineEditCompleter->model();
+ lineEditCompleter->setModel(new QStringListModel(*completerModel));
+ delete temp;
#ifndef Q_WS_MAEMO_5
emit setLineEditText(word);
#else