#include "common.h"\r
+#include "version.h"\r
#include "mainwindow.h"\r
#include "preferencedialog.h"\r
#include "folderview.h"\r
\r
// シグナル&スロット\r
connect(folderView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(open(QModelIndex)));\r
- connect(folderView, SIGNAL(itemFound(FolderView*)), this, SLOT(itemFound(FolderView*)));\r
- connect(folderView, SIGNAL(itemNotFound(FolderView*)), this, SLOT(itemNotFound(FolderView*)));\r
- connect(folderView, SIGNAL(keyPressed(FolderView*,QKeyEvent*)), this, SLOT(keyPress(FolderView*,QKeyEvent*)));\r
+ connect(folderView, SIGNAL(dataChanged()), this, SLOT(dataChange()));\r
+ connect(folderView, SIGNAL(dropAccepted(QFileInfoList)), this, SLOT(dropAccept(QFileInfoList)));\r
+ connect(folderView, SIGNAL(currentChanged(QFileInfo)), this, SLOT(currentChange(QFileInfo)));\r
+ connect(folderView, SIGNAL(itemFound()), this, SLOT(itemFound()));\r
+ connect(folderView, SIGNAL(itemNotFound()), this, SLOT(itemNotFound()));\r
+ connect(folderView, SIGNAL(keyPressed(QKeyEvent*)), this, SLOT(keyPress(QKeyEvent*)));\r
connect(folderView, SIGNAL(retrieveFinished()), this, SLOT(retrieveFinish()));\r
connect(folderView, SIGNAL(retrieveStarted(QString)), this, SLOT(retrieveStart(QString)));\r
+ connect(folderView, SIGNAL(requestContextMenu(QContextMenuEvent*)), this, SLOT(showContextMenu(QContextMenuEvent*)));\r
connect(searchBox, SIGNAL(textEdited(QString)), this, SLOT(searchItem(QString)));\r
connect(searchBox, SIGNAL(returnPressed()), this, SLOT(returnPressInSearchBox()));\r
\r
\r
// フォルダビューを初期化する\r
folderView->initialize();\r
-\r
- folderView->repaint();\r
}\r
\r
QSettings settings;\r
ui->action_Exec->setShortcuts(shortcuts);\r
\r
// MacだとShift+の形で認識されてしまうもの\r
+ shortcuts = ui->view_FontSizeUp->shortcuts();\r
+ shortcuts.append(QKeySequence("Shift++"));\r
+ ui->view_FontSizeUp->setShortcuts(shortcuts);\r
+\r
shortcuts = ui->view_Filter->shortcuts();\r
- shortcuts.append(QKeySequence("Shift+*")); // マヂで!?\r
+ shortcuts.append(QKeySequence("Shift+*"));\r
ui->view_Filter->setShortcuts(shortcuts);\r
\r
shortcuts = ui->action_OpenTerminal->shortcuts();\r
- shortcuts.append(QKeySequence("Shift+>")); // マヂで!?\r
+ shortcuts.append(QKeySequence("Shift+>"));\r
ui->action_OpenTerminal->setShortcuts(shortcuts);\r
\r
shortcuts = ui->help_About->shortcuts();\r
- shortcuts.append(QKeySequence("Shift+?")); // マヂで!?\r
+ shortcuts.append(QKeySequence("Shift+?"));\r
ui->help_About->setShortcuts(shortcuts);\r
\r
// ウィンドウタイトルを設定する\r
if (settings.value(IniKey_CheckUpdates).toBool()) {\r
checkUpdate(true);\r
}\r
+\r
+ ui->folderView1->refresh();\r
+ ui->folderView2->refresh();\r
}\r
\r
MainWindow::~MainWindow()\r
void MainWindow::focusChange(QWidget *old, QWidget *now)\r
{\r
Q_UNUSED(old);\r
- Q_UNUSED(now);\r
qDebug() << "MainWindow::focusChange";\r
\r
+ if (now == ui->folderView1 || now == ui->folderView2) {\r
+ ui->statusBar->showMessage(folderView()->currentItem().absoluteFilePath());\r
+ }\r
+\r
+ if (old == ui->searchBox1 || old == ui->searchBox2) {\r
+ old->setVisible(false);\r
+ }\r
+\r
updateActions();\r
}\r
\r
}\r
}\r
\r
-void MainWindow::itemFound(FolderView *view)\r
+void MainWindow::itemFound()\r
{\r
qDebug() << "MainWindow::itemFound";\r
\r
- SearchBox *box = searchBox(view);\r
+ SearchBox *box = searchBox(static_cast<FolderView*>(sender()));\r
QPalette pal = box->palette();\r
pal.setColor(QPalette::Text, QPalette().text().color());\r
box->setPalette(pal);\r
}\r
\r
-void MainWindow::itemNotFound(FolderView *view)\r
+void MainWindow::itemNotFound()\r
{\r
qDebug() << "MainWindow::itemNotFound";\r
\r
- SearchBox *box = searchBox(view);\r
+ SearchBox *box = searchBox(static_cast<FolderView*>(sender()));\r
QPalette pal = box->palette();\r
pal.setColor(QPalette::Text, Qt::red);\r
box->setPalette(pal);\r
ui->folderView2->refresh();\r
}\r
\r
-void MainWindow::keyPress(FolderView *view, QKeyEvent *event)\r
+void MainWindow::keyPress(QKeyEvent *event)\r
{\r
QString ksq = KeyEventToSequence(event);\r
if (ksq == "") {\r
}\r
\r
if (ksq == "Left" || ksq == "Right") {\r
+ FolderView *view = static_cast<FolderView*>(sender());\r
if (view->side() == ksq) {\r
+ setPathToParent();\r
}\r
else {\r
otherSideView(view)->setFocus();\r
worker->endAsking();\r
}\r
\r
+void MainWindow::currentChange(const QFileInfo &info)\r
+{\r
+ qDebug() << "MainWindow::currentChange();";\r
+\r
+ ui->statusBar->showMessage(info.absoluteFilePath());\r
+ if (info.isDir()) {\r
+ ui->action_Open->setIcon(QIcon(":/images/Open.png"));\r
+ ui->action_Open->setText(tr("開く"));\r
+ ui->action_Open->setToolTip(tr("開く"));\r
+ }\r
+ else {\r
+ ui->action_Open->setIcon(QIcon(":/images/Search text.png"));\r
+ ui->action_Open->setText(tr("テキストビューアで開く"));\r
+ ui->action_Open->setToolTip(tr("テキストビューアで開く"));\r
+ ui->action_Open->setEnabled(true);\r
+\r
+ QSettings settings;\r
+ if (!settings.value(IniKey_ViewerForceOpen).toBool()) {\r
+ QStringList list = settings.value(IniKey_ViewerIgnoreExt).toString().split(",");\r
+ foreach (const QString &ext, list) {\r
+ if (ext.toLower() == info.suffix().toLower()) {\r
+ ui->action_Open->setEnabled(false);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+}\r
+\r
+void MainWindow::dataChange()\r
+{\r
+ qDebug() << "MainWindow::dataChange();";\r
+\r
+ FolderView *view = static_cast<FolderView*>(sender());\r
+ QFileInfoList list = view->checkedItems();\r
+ if (list.isEmpty()) {\r
+ showNameFilters(view);\r
+ }\r
+ else {\r
+ int numFolders = 0;\r
+ int numFiles = 0;\r
+ quint64 size = 0;\r
+ foreach (const QFileInfo &info, list) {\r
+ if (info.isDir()) {\r
+ numFolders++;\r
+ }\r
+ else {\r
+ numFiles++;\r
+ size += info.size();\r
+ }\r
+ }\r
+\r
+ QString msg = QString::null;\r
+ if (numFolders > 0) {\r
+ msg += tr("%1個のフォルダ ").arg(numFolders);\r
+ }\r
+ if (numFiles > 0) {\r
+ msg += tr("%1個のファイル ").arg(numFiles);\r
+ }\r
+\r
+ if (!msg.isEmpty()) {\r
+ msg += tr("を選択 合計%1").arg(FilesizeToString(size));\r
+ }\r
+\r
+ filterLabel(view)->setText(msg);\r
+ }\r
+}\r
+\r
+void MainWindow::dropAccept(const QFileInfoList &list)\r
+{\r
+ copyItems(list, static_cast<FolderView*>(sender())->dir());\r
+}\r
+\r
+void MainWindow::copyItems(const QFileInfoList &list, const QString &tgtDir)\r
+{\r
+ QSettings settings;\r
+ if (settings.value(IniKey_ConfirmCopy).toBool()) {\r
+ if (QMessageBox::question(this, tr("確認"), tr("コピーを実行しますか?"))\r
+ != QMessageBox::Yes)\r
+ {\r
+ return;\r
+ }\r
+ }\r
+\r
+ // 上書き確認ダイアログを初期化する\r
+ m_overwriteDialog->reset();\r
+\r
+ // ワーカースレッドを作成する\r
+ CopyMoveWorker *worker = new CopyMoveWorker();\r
+ connect(worker, SIGNAL(askOverWrite(QString*,QString*,QString,QString)),\r
+ this, SLOT(askOverWrite(QString*,QString*,QString,QString)));\r
+ worker->setCopyList(&list);\r
+ worker->setTargetDir(tgtDir);\r
+ worker->setMoveMode(false);\r
+\r
+ // 進捗ダイアログを表示して、処理を開始する\r
+ OperationDialog opDlg(this);\r
+ opDlg.setWindowTitle(tr("コピー"));\r
+ opDlg.setWorker(worker);\r
+ opDlg.setAutoClose(settings.value(IniKey_AutoCloseCopy).toBool());\r
+\r
+ opDlg.exec();\r
+\r
+ settings.setValue(IniKey_AutoCloseCopy, opDlg.autoClose());\r
+\r
+ // 念のため、リフレッシュ\r
+ ui->folderView1->refresh();\r
+ ui->folderView2->refresh();\r
+}\r
+\r
void MainWindow::copyItems()\r
{\r
qDebug() << "MainWindow::copyItems";\r
return;\r
}\r
\r
+ FolderView *other = otherSideView(v);\r
+ copyItems(list, other->dir());\r
+#if 0\r
QSettings settings;\r
if (settings.value(IniKey_ConfirmCopy).toBool()) {\r
if (QMessageBox::question(this, tr("確認"), tr("コピーを実行しますか?"))\r
// 念のため、リフレッシュ\r
ui->folderView1->refresh();\r
ui->folderView2->refresh();\r
+#endif\r
}\r
\r
void MainWindow::createFile()\r
view->setSorting(flags);\r
}\r
\r
+void MainWindow::showNameFilters(FolderView *view)\r
+{\r
+ filterLabel(view)->setText(tr("フィルタ:") + view->nameFilters().join(" "));\r
+}\r
+\r
void MainWindow::searchItem(const QString &text)\r
{\r
qDebug() << "MainWindow::searchItem" << text;\r
v->setCurrentIndex(v->model()->index(row, 0));\r
}\r
\r
+void MainWindow::setFontSizeDown()\r
+{\r
+ qDebug() << "MainWindow::setFontSizeDown();";\r
+\r
+ QSettings settings;\r
+\r
+ QFont font = settings.value(IniKey_ViewFont).value<QFont>();\r
+ font.setPointSize(font.pointSize() - 1);\r
+ settings.setValue(IniKey_ViewFont, font);\r
+\r
+ ui->folderView1->updateAppearance();\r
+ ui->folderView2->updateAppearance();\r
+}\r
+\r
+void MainWindow::setFontSizeUp()\r
+{\r
+ qDebug() << "MainWindow::setFontSizeUp();";\r
+\r
+ QSettings settings;\r
+\r
+ QFont font = settings.value(IniKey_ViewFont).value<QFont>();\r
+ font.setPointSize(font.pointSize() + 1);\r
+ settings.setValue(IniKey_ViewFont, font);\r
+\r
+ ui->folderView1->updateAppearance();\r
+ ui->folderView2->updateAppearance();\r
+}\r
+\r
void MainWindow::setPathFromOther()\r
{\r
qDebug() << "MainWindow::setPathFromOther();";\r
ui->locationBox2->updateAppearance();\r
ui->folderView1->updateAppearance();\r
ui->folderView2->updateAppearance();\r
+ ui->textView->updateAppearance();\r
\r
updateActions();\r
}\r
ui->folderView2->refresh();\r
}\r
\r
+void MainWindow::showContextMenu(QContextMenuEvent *event)\r
+{\r
+ qDebug() << "MainWindow::showContextMenu();";\r
+\r
+ FolderView *view = static_cast<FolderView*>(sender());\r
+ QModelIndex index = view->indexAt(event->pos());\r
+\r
+ QMenu menu(this);\r
+ if (index.isValid()) {\r
+ menu.addAction(ui->action_Open);\r
+ menu.addAction(ui->action_Exec);\r
+ menu.addAction(ui->action_OpenEditor);\r
+ menu.addAction(ui->action_OpenTerminal);\r
+ menu.addSeparator();\r
+ menu.addAction(ui->copy_Filename);\r
+ menu.addAction(ui->copy_Fullpath);\r
+ }\r
+ else {\r
+ menu.addAction(ui->move_Back);\r
+ menu.addAction(ui->move_Forward);\r
+ menu.addSeparator();\r
+ menu.addAction(ui->move_Parent);\r
+ menu.addAction(ui->move_Home);\r
+ menu.addAction(ui->move_Root);\r
+ menu.addAction(ui->move_Jump);\r
+ }\r
+\r
+ menu.exec(event->globalPos());\r
+\r
+}\r
+\r
void MainWindow::checkUpdate(bool silent)\r
{\r
qDebug() << "MainWindow::checkUpdate()" << silent;\r
connect(ui->move_Root, SIGNAL(triggered()), this, SLOT(setPathToRoot()));\r
connect(ui->move_Up, SIGNAL(triggered()), this, SLOT(cursorUp()));\r
connect(ui->view_Filter, SIGNAL(triggered()), this, SLOT(showFilterDialog()));\r
+ connect(ui->view_FontSizeDown, SIGNAL(triggered()), this, SLOT(setFontSizeDown()));\r
+ connect(ui->view_FontSizeUp, SIGNAL(triggered()), this, SLOT(setFontSizeUp()));\r
connect(ui->view_FromOther, SIGNAL(triggered()), this, SLOT(setPathFromOther()));\r
connect(ui->view_Hidden, SIGNAL(toggled(bool)), this, SLOT(toggleShowHiddenFiles(bool)));\r
connect(ui->view_Refresh, SIGNAL(triggered()), this, SLOT(refresh()));\r
list << "*";\r
}\r
view->setNameFilters(list);\r
- filterLabel(view)->setText(tr("フィルタ:") + list.join(" "));\r
+ showNameFilters(view);\r
}\r
\r
QLabel *MainWindow::filterLabel(const FolderView *view) const\r