X-Git-Url: https://vaikene.ee/gitweb/pswgen09.html?a=blobdiff_plain;f=src%2Fapps%2FFileFinder%2FGUI%2Fgui.cpp;h=e664dd7703d484f06e62890ee6ccc8f73a2f04c9;hb=38c2779e95311f1d9dac4a9d9469b0489b395333;hp=29dcd712b3280e4aa22d3d37ee4dbce38f32f592;hpb=7eca3433b1db8f2bcc61fa8db60bc7546f5cb578;p=evaf
diff --git a/src/apps/FileFinder/GUI/gui.cpp b/src/apps/FileFinder/GUI/gui.cpp
index 29dcd71..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)
@@ -118,7 +120,7 @@ bool FileFinder::GUI::Module::init(QString const & args)
// Create the main widget for this window
wMain = new Internal::MainWidget;
connect(wMain, SIGNAL(quit()), qApp, SLOT(quit()));
- win->addWidget(wMain);
+ win->addPanel("FileFinder", wMain);
// Create actions for the window and widgets on it
createActions();
@@ -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);
}
}