X-Git-Url: https://vaikene.ee/gitweb/highlight.css?a=blobdiff_plain;f=src%2Fapps%2FFileFinder%2FGUI%2Fgui.cpp;h=e664dd7703d484f06e62890ee6ccc8f73a2f04c9;hb=c3f12950e16f519639cf987baf4f590abe6a0c2e;hp=d1f1c4b36169b9bfa4bee7cd3d93e65ef2be9df9;hpb=388264abc0442ea0e4c6dca6812cb755053c79d5;p=evaf diff --git a/src/apps/FileFinder/GUI/gui.cpp b/src/apps/FileFinder/GUI/gui.cpp index d1f1c4b..e664dd7 100644 --- a/src/apps/FileFinder/GUI/gui.cpp +++ b/src/apps/FileFinder/GUI/gui.cpp @@ -83,6 +83,8 @@ FileFinder::GUI::Module::Module() , mFinder(0) , mOpenFileAction(0) , mOpenDirectoryAction(0) + , mCopyNameAction(0) + , mCopyAllNamesAction(0) , wMain(0) , wDirectory(0) , wRecursive(0) @@ -281,8 +283,7 @@ void FileFinder::GUI::Module::createWidgets() wResults = new QListWidget; wResults->setContextMenuPolicy(Qt::ActionsContextMenu); - wResults->addAction(mOpenFileAction); - wResults->addAction(mOpenDirectoryAction); + wResults->addActions(QList() << mOpenFileAction << mOpenDirectoryAction << mCopyNameAction << mCopyAllNamesAction); connect(wResults, SIGNAL(currentRowChanged(int)), this, SLOT(currentRowChanged(int))); connect(wResults, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(openFile(QModelIndex))); vbox->addWidget(wResults); @@ -315,6 +316,14 @@ void FileFinder::GUI::Module::createActions() mOpenDirectoryAction = new QAction(tr("Open &location"), wMain); mOpenDirectoryAction->setEnabled(false); connect(mOpenDirectoryAction, SIGNAL(triggered()), this, SLOT(openDirectory())); + + mCopyNameAction = new QAction(tr("&Copy name"), wMain); + mCopyNameAction->setEnabled(false); + connect(mCopyNameAction, SIGNAL(triggered()), this, SLOT(copyName())); + + mCopyAllNamesAction = new QAction(tr("Copy &all names"), wMain); + connect(mCopyAllNamesAction, SIGNAL(triggered()), this, SLOT(copyAllNames())); + } void FileFinder::GUI::Module::browseDirectory() @@ -397,19 +406,52 @@ void FileFinder::GUI::Module::currentRowChanged(int currentRow) { mOpenFileAction->setEnabled(currentRow >= 0); mOpenDirectoryAction->setEnabled(currentRow >= 0); + mCopyNameAction->setEnabled(currentRow >= 0); } void FileFinder::GUI::Module::openFile(QModelIndex const & index) { Q_UNUSED(index) - if (wResults->currentItem()) - QDesktopServices::openUrl(QUrl(QString("file:///%1").arg(wResults->currentItem()->text()))); + if (wResults->currentItem()) { + QString t = wResults->currentItem()->text(); + t.replace("?", "\0453f"); + QDesktopServices::openUrl(QUrl::fromEncoded(QString("file:///%1").arg(t).toUtf8())); + } } void FileFinder::GUI::Module::openDirectory() { if (wResults->currentItem()) { - QFileInfo fi(wResults->currentItem()->text()); - QDesktopServices::openUrl(QUrl(QString("file:///%1").arg(fi.path()))); + QString t = wResults->currentItem()->text(); + t.replace("?", "\0453f"); + QFileInfo fi(t); + QDesktopServices::openUrl(QUrl::fromEncoded(QString("file:///%1").arg(fi.path()).toUtf8())); + } +} + +void FileFinder::GUI::Module::copyName() +{ + if (wResults->currentItem()) { + QClipboard * cb = QApplication::clipboard(); + if (cb) + cb->setText(wResults->currentItem()->text()); + } +} + +void FileFinder::GUI::Module::copyAllNames() +{ +#ifdef Q_OS_WIN32 + static char const * const EOLN = "\r\n"; +#else + static char const * const EOLN = "\n"; +#endif + + QString t; + for (int i = 0; i < wResults->count(); ++i) + t.append(wResults->item(i)->text() + EOLN); + if (!t.isEmpty()) { + QClipboard * cb = QApplication::clipboard(); + if (cb) + cb->setText(t); } }