SVN commit 993504 by shaforo: autoexpand folders with matching files BUG:186114 M +27 -23 projecttab.cpp M +2 -0 projecttab.h M +10 -32 projectwidget.cpp M +1 -5 projectwidget.h --- trunk/KDE/kdesdk/lokalize/src/project/projecttab.cpp #993503:993504 @@ -25,6 +25,7 @@ #include "project.h" #include "projectwidget.h" #include "editortab.h" +#include "tmscanapi.h" #include #include @@ -77,36 +78,40 @@ //kWarning()<<"destroyed"; } - void ProjectTab::setFocus() { m_lineEdit->setFocus(); m_lineEdit->selectAll(); } - void ProjectTab::setFilterRegExp() { - if (m_browser->proxyModel()->filterRegExp().pattern()!=m_lineEdit->text()) - m_browser->proxyModel()->setFilterRegExp(m_lineEdit->text()); + QString newPattern=m_lineEdit->text(); + if (m_browser->proxyModel()->filterRegExp().pattern()==newPattern) + return; + + m_browser->proxyModel()->setFilterRegExp(newPattern); + if (newPattern.size()>2) + m_browser->expandItems(); } - void ProjectTab::contextMenuEvent(QContextMenuEvent *event) { - QMenu menu; - QAction* openNew=0; + QMenu* menu=new QMenu(this); + connect(menu,SIGNAL(aboutToHide()),menu,SLOT(deleteLater())); + if (m_browser->currentIsTranslationFile()) { - openNew=menu.addAction(i18nc("@action:inmenu","Open")); - menu.addSeparator(); + menu->addAction(i18nc("@action:inmenu","Open"),this,SLOT(openFile)); + menu->addSeparator(); } /*menu.addAction(i18nc("@action:inmenu","Find in files"),this,SLOT(findInFiles())); menu.addAction(i18nc("@action:inmenu","Replace in files"),this,SLOT(replaceInFiles())); menu.addAction(i18nc("@action:inmenu","Spellcheck files"),this,SLOT(spellcheckFiles())); - menu.addSeparator();*/ - menu.addAction(i18nc("@action:inmenu","Get statistics for subfolders"),m_browser,SLOT(expandItems())); - //menu.addAction(i18nc("@action:inmenu","Add to translation memory"),m_browser,SLOT(expandItems())); + menu.addSeparator(); + menu->addAction(i18nc("@action:inmenu","Get statistics for subfolders"),m_browser,SLOT(expandItems())); + */ + menu->addAction(i18nc("@action:inmenu","Add to translation memory"),this,SLOT(scanFilesToTM())); // else if (Project::instance()->model()->hasChildren(/*m_proxyModel->mapToSource(*/(m_browser->currentIndex())) @@ -117,20 +122,19 @@ // // } + menu->popup(event->globalPos()); +} - QAction* result=menu.exec(event->globalPos()); - if (!result) - return; - if (result==openNew) - emit fileOpenRequested(m_browser->currentItem()); - //fileOpen(m_browser->currentItem()); - /* else if (result==openExisting) - Project::instance()->openInExisting(m_browser->currentItem());*/ - //else if (result==findInFiles) - // emit findInFilesRequested(m_browser->selectedItems()); +void ProjectTab::scanFilesToTM() +{ + QList urls; + foreach(const KUrl& url, m_browser->selectedItems()) + urls.append(url); + TM::scanRecursive(urls,Project::instance()->projectID()); } +void ProjectTab::openFile() {emit fileOpenRequested(m_browser->currentItem());} void ProjectTab::findInFiles() {emit searchRequested(m_browser->selectedItems());} void ProjectTab::replaceInFiles() {emit replaceRequested(m_browser->selectedItems());} void ProjectTab::spellcheckFiles(){emit spellcheckRequested(m_browser->selectedItems());} @@ -142,7 +146,7 @@ { QStringList result; foreach (const KUrl& url, m_browser->selectedItems()) - result<=0) + foreach(const QModelIndex& item, selectedIndexes()) { - if (sel.at(i).column()==0) - recursiveAdd(list,m_proxyModel->mapToSource(sel.at(i))); + if (item.column()==0) + recursiveAdd(list,m_proxyModel->mapToSource(item)); } -/* - i=list.size(); - while(--i>=0) - kWarning()<<"'''''''''''"<=0) - { - const KFileItem& item(Project::instance()->model()->itemForIndex( - m_proxyModel->mapToSource(sel.at(i)) - )); - const KUrl& u(item.url()); - if (item.isDir()) - { - int count=Project::instance()->model()->rowCount(m_proxyModel->mapToSource(sel.at(i))); + const QAbstractItemModel* m=model(); + expand(parent); - //if(! count ) - //static_cast(Project::instance()->model()->dirLister())->openUrlRecursive(u); - //TODO - //static_cast(Project::instance()->model()->dirLister())->openUrlRecursive(u,true,false); - } - - QCoreApplication::processEvents(QEventLoop::AllEvents); - } - - //static_cast(Project::instance()->model())->readRecursively(); + int i=m->rowCount(parent); + while(--i>=0) + expandItems(m->index(i,0,parent)); } --- trunk/KDE/kdesdk/lokalize/src/project/projectwidget.h #993503:993504 @@ -46,15 +46,11 @@ void setCurrentItem(const KUrl&); KUrl currentItem() const; KUrl::List selectedItems() const; - bool currentIsTranslationFile() const; - QSortFilterProxyModel* proxyModel(); + void expandItems(const QModelIndex& parent=QModelIndex()); -public slots: - void expandItems(); - signals: void fileOpenRequested(const KUrl&); void newWindowOpenRequested(const KUrl&);