#include "common.h"
#include "mainwindow.h"
#include "folderpanel.h"
-#include "locationbox.h"
#include "folderview.h"
#include <QDebug>
{
setModel(&m_model);
connect(&m_model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(dataChanged(QModelIndex,QModelIndex)));
+ connect(&m_model, SIGNAL(preReload()), this, SLOT(preReload()));
+ connect(&m_model, SIGNAL(postReload()), this, SLOT(postReload()));
setDragEnabled(true);
setAcceptDrops(true);
}
}
-void FolderView::initialize(MainWindow *mainWnd, bool left)
+void FolderView::initialize(MainWindow *mainWnd)
{
qDebug() << side() << "initialize";
// 前回終了時のパスを開く
QSettings settings;
setPath(settings.value(side() + slash + IniKey_Dir).toString(), true);
-
- // 色とフォントを設定する
- updateAppearance(!left);
-
- // 列のリサイズモードを設定する
- QHeaderView *header;
- header = horizontalHeader();
- header->setSectionResizeMode(0, QHeaderView::Fixed);
- header->setSectionResizeMode(1, QHeaderView::Stretch);
- header->setSectionResizeMode(2, QHeaderView::ResizeToContents);
- header->setSectionResizeMode(3, QHeaderView::ResizeToContents);
- header->setSectionResizeMode(4, QHeaderView::ResizeToContents);
}
-void FolderView::updateAppearance(bool darker)
+void FolderView::refresh()
{
- qDebug() << side() << "updateAppearance";
- m_model.updateAppearance(darker);
-
- QSettings settings;
- QPalette pal = palette();
- int darkness = 100;
- if (darker) {
- darkness += settings.value(IniKey_Darkness).toInt();
- }
- pal.setColor(QPalette::Base, settings.value(IniKey_ViewColorBgNormal).value<QColor>().darker(darkness));
- setPalette(pal);
+ qDebug() << side() << "refresh";
- // 行の高さを設定する
- QHeaderView *header = verticalHeader();
- header->setDefaultSectionSize(QFontMetrics(m_model.font()).height() * 1.5);
+ preReload();
- // 列の幅を設定する
- header = horizontalHeader();
- header->setSectionResizeMode(0, QHeaderView::Fixed);
- header->setSectionResizeMode(1, QHeaderView::Stretch);
- header->setSectionResizeMode(2, QHeaderView::ResizeToContents);
- header->setSectionResizeMode(3, QHeaderView::ResizeToContents);
- header->setSectionResizeMode(4, QHeaderView::ResizeToContents);
+ setPath(m_model.absolutePath(), false);
- repaint();
+ postReload();
}
-void FolderView::refresh()
+void FolderView::preReload()
{
- qDebug() << side() << "refresh";
-
- int row = currentIndex().row();
-
- setPath(m_model.absolutePath(), false);
+ // 現在行と名前を保存しておく
+ m_saveRow = currentIndex().row();
+ m_saveName = currentItem().fileName();
+}
- if (row < 0) {
- row = 0;
+void FolderView::postReload()
+{
+ // 保存した名前と同名アイテムが見つかれば、再選択する
+ for (int row = 0; row < m_model.rowCount(); row++) {
+ QModelIndex index = m_model.index(row, 1);
+ if (m_model.fileInfo(index).fileName().indexOf(m_saveName) != -1) {
+ setCurrentIndex(index);
+ return;
+ }
}
- else if (row >= m_model.rowCount()) {
- row = m_model.rowCount() - 1;
+
+ // 同名アイテムが見つからなければ、行を維持する
+ if (m_saveRow >= m_model.rowCount()) {
+ m_saveRow = m_model.rowCount() - 1;
}
- setCurrentIndex(m_model.index(row, 1));
-// selectRow(row);
+ setCurrentIndex(m_model.index(m_saveRow, 1));
}
void FolderView::searchItem(const QString &text)
QModelIndex current = currentIndex();
- setUpdatesEnabled(false);
for (int n = 0; n < m_model.rowCount(); n++) {
m_model.setData(m_model.index(n, 0), state, Qt::CheckStateRole);
}
- setUpdatesEnabled(true);
setCurrentIndex(current);
}
QModelIndex current = currentIndex();
- setUpdatesEnabled(false);
for (int n = 0; n < m_model.rowCount(); n++) {
QModelIndex index = m_model.index(n, 0);
QFileInfo info = m_model.fileInfo(index);
m_model.setData(index, Qt::Checked, Qt::CheckStateRole);
}
}
- setUpdatesEnabled(true);
setCurrentIndex(current);
}
QModelIndex current = currentIndex();
- setUpdatesEnabled(false);
for (int n = 0; n < m_model.rowCount(); n++) {
QModelIndex index = m_model.index(n, 0);
if (m_model.data(index, Qt::CheckStateRole).toInt() == Qt::Checked) {
m_model.setData(index, Qt::Checked, Qt::CheckStateRole);
}
}
- setUpdatesEnabled(true);
setCurrentIndex(current);
}
return list;
}
+FolderPanel *FolderView::parentPanel() const
+{
+ return qobject_cast<FolderPanel*>(parentWidget());
+}
+
void FolderView::setPath(const QString &path, bool addHistory)
{
qDebug() << side() << "setPath" << path << addHistory;
m_mainWnd->statusBar()->showMessage(tr("ファイルリストを取得しています..."));
emit retrieveStarted(path);
- setUpdatesEnabled(false);
m_model.setPath(path);
setCurrentIndex(m_model.index(0, 1));
- setUpdatesEnabled(true);
if (addHistory) {
m_history.add(path);
event->acceptProposedAction();
- emit dropAccepted(list);
+ emit dropAccepted(list, event);
}
emit requestContextMenu(event);
}
-
-
-void FolderView::focusInEvent(QFocusEvent *event)
-{
- if (!currentIndex().isValid()) {
- setCurrentIndex(m_model.index(0, 1));
- }
-
- this->updateAppearance();
-
- FolderPanel *fp = qobject_cast<FolderPanel*>(parentWidget());
- fp->locationBox()->updateAppearance();
-
- QTableView::focusInEvent(event);
-}
-
-void FolderView::focusOutEvent(QFocusEvent *event)
-{
- m_model.updateAppearance(true);
-
- this->updateAppearance(true);
-
- FolderPanel *fp = qobject_cast<FolderPanel*>(parentWidget());
- fp->locationBox()->updateAppearance(true);
-
- QTableView::focusOutEvent(event);
-}
#include "preferencedialog.h"\r
#include "folderview.h"\r
#include "searchbox.h"\r
-#include "locationbox.h"\r
#include "copymoveworker.h"\r
#include "operationdialog.h"\r
#include "overwritedialog.h"\r
MainWindow::MainWindow(QWidget *parent) :\r
QMainWindow(parent),\r
ui(new Ui::MainWindow),\r
- m_focusedView(NULL),\r
+ m_activeView(NULL),\r
m_overwriteDialog(NULL),\r
m_viewMode(ModeBasic)\r
{\r
fp->setObjectName(QString("folderPanel%1").arg(i));\r
fp->folderView()->setObjectName(QString("folderView%1").arg(i));\r
\r
- fp->initialize(this, i == 1);\r
+ fp->initialize(this);\r
+ fp->updateAppearance(i == 2);\r
}\r
\r
QSettings settings;\r
// メニュー項目の状態を初期化する\r
ui->view_Hidden->setChecked(settings.value(IniKey_ShowHidden).toBool());\r
ui->view_System->setChecked(settings.value(IniKey_ShowSystem).toBool());\r
-// ui->action_OpenEditor->setEnabled(!settings.value(IniKey_PathEditor).toString().isEmpty());\r
-// ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_PathTerminal).toString().isEmpty());\r
\r
// 追加のショートカットキーを設定する\r
QList<QKeySequence> shortcuts;\r
if (now == ui->pane1->folderPanel()->folderView() ||\r
now == ui->pane2->folderPanel()->folderView())\r
{\r
- FolderView *view = static_cast<FolderView*>(now);\r
- ui->statusBar->showMessage(view->currentItem().absoluteFilePath());\r
+ m_activeView = qobject_cast<FolderView*>(now);\r
+ ui->statusBar->showMessage(m_activeView->currentItem().absoluteFilePath());\r
+ m_activeView->parentPanel()->updateAppearance(false);\r
+ otherSideFolderView(m_activeView)->parentPanel()->updateAppearance(true);\r
}\r
\r
if (now) {\r
{\r
qDebug() << "MainWindow::executeCommand";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- QFileInfoList list = view->selectedItems();\r
+ QFileInfoList list = m_activeView->selectedItems();\r
QString command = QString::null;\r
foreach (const QFileInfo &info, list) {\r
#ifdef Q_OS_MAC\r
int ret = dlg.exec();\r
command = dlg.textValue();\r
if (ret == QDialog::Accepted && !command.isEmpty()) {\r
- startProcess(command, view->dir(), tr("コマンドの実行に失敗しました。"));\r
+ startProcess(command, m_activeView->dir(), tr("コマンドの実行に失敗しました。"));\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::historyBack();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- if (view->historyBack()) {\r
+ if (m_activeView->historyBack()) {\r
updateActions();\r
}\r
}\r
{\r
qDebug() << "MainWindow::historyForward();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- if (view->historyForward()) {\r
+ if (m_activeView->historyForward()) {\r
updateActions();\r
}\r
}\r
{\r
qDebug() << "MainWindow::markAll();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->setCheckStateAll(Qt::Checked);\r
+ m_activeView->setCheckStateAll(Qt::Checked);\r
}\r
\r
void MainWindow::markAllFiles()\r
{\r
qDebug() << "MainWindow::markAllFiles();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->setCheckStateAllFiles();\r
+ m_activeView->setCheckStateAllFiles();\r
}\r
\r
void MainWindow::markAllOff()\r
{\r
qDebug() << "MainWindow::markAllOff();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->setCheckStateAll(Qt::Unchecked);\r
+ m_activeView->setCheckStateAll(Qt::Unchecked);\r
}\r
\r
void MainWindow::markInvert()\r
{\r
qDebug() << "MainWindow::markInvert();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->invertCheckState();\r
+ m_activeView->invertCheckState();\r
}\r
\r
void MainWindow::markToggle()\r
{\r
qDebug() << "MainWindow::markToggle();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->toggleCheckState(view->currentIndex());\r
+ m_activeView->toggleCheckState(m_activeView->currentIndex());\r
}\r
\r
void MainWindow::moveItems()\r
{\r
qDebug() << "MainWindow::moveItems";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- QFileInfoList list = view->selectedItems();\r
+ QFileInfoList list = m_activeView->selectedItems();\r
if (list.isEmpty()) {\r
return;\r
}\r
\r
- QSettings settings;\r
- if (settings.value(IniKey_ConfirmMove).toBool()) {\r
- if (QMessageBox::question(this, tr("確認"), tr("移動を実行しますか?"))\r
- != QMessageBox::Yes)\r
- {\r
- return;\r
- }\r
- }\r
-\r
- // 上書き確認ダイアログを初期化する\r
- m_overwriteDialog->reset();\r
+ int row = m_activeView->currentIndex().row();\r
\r
- // ワーカースレッドを作成する\r
- FolderView *other = otherSideFolderView(view);\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(other->dir());\r
- worker->setMoveMode(true);\r
+ QString tgtPath = otherSideFolderView(m_activeView)->dir();\r
+ moveItems(list, tgtPath);\r
+ m_activeView->refresh();\r
\r
- // 進捗ダイアログを表示して、処理を開始する\r
- OperationDialog opDlg(this);\r
- opDlg.setWindowTitle(tr("移動"));\r
- opDlg.setWorker(worker);\r
- opDlg.setAutoClose(settings.value(IniKey_AutoCloseMove).toBool());\r
-\r
- int row = view->currentIndex().row();\r
-\r
- opDlg.exec();\r
-\r
- if (row >= view->model()->rowCount()) {\r
- row = view->model()->rowCount() - 1;\r
+ if (row >= m_activeView->model()->rowCount()) {\r
+ row = m_activeView->model()->rowCount() - 1;\r
}\r
- //view->selectRow(row);\r
- view->setCurrentIndex(view->model()->index(row, 1));\r
-\r
- settings.setValue(IniKey_AutoCloseMove, opDlg.autoClose());\r
+ m_activeView->setCurrentIndex(m_activeView->model()->index(row, 1));\r
}\r
\r
+\r
void MainWindow::leftKeyPress()\r
{\r
qDebug() << "MainWindow::leftKeyPress();";\r
{\r
qDebug() << "MainWindow::chooseFolder();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
QString path = QFileDialog::getExistingDirectory(\r
- this, tr("フォルダを選択"), view->dir());\r
+ this, tr("フォルダを選択"), m_activeView->dir());\r
if (!path.isEmpty()) {\r
- view->setPath(path, true);\r
+ m_activeView->setPath(path, true);\r
updateActions();\r
}\r
}\r
{\r
qDebug() << "MainWindow::copyFilenameToClipboard();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
QClipboard *clipboard = QApplication::clipboard();\r
- clipboard->setText(view->currentItem().fileName());\r
+ clipboard->setText(m_activeView->currentItem().fileName());\r
}\r
\r
void MainWindow::copyFullpathTpClipboard()\r
{\r
qDebug() << "MainWindow::copyFullpathTpClipboard();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
QClipboard *clipboard = QApplication::clipboard();\r
- clipboard->setText(view->currentItem().absoluteFilePath());\r
+ clipboard->setText(m_activeView->currentItem().absoluteFilePath());\r
}\r
\r
void MainWindow::askOverWrite(QString *copyMethod,\r
updateActions();\r
}\r
\r
-void MainWindow::dropAccept(const QFileInfoList &list)\r
+void MainWindow::dropAccept(const QFileInfoList &list, QDropEvent *event)\r
{\r
qDebug() << "MainWindow::dropAccept();";\r
\r
FolderView *view = static_cast<FolderView*>(sender());\r
Q_CHECK_PTR(view);\r
\r
- copyItems(list, view->dir());\r
+ bool move = false;\r
+ QMenu menu(this);\r
+ QAction *actCopy = menu.addAction(tr("コピー"));\r
+ QAction *actMove = menu.addAction(tr("移動"));\r
+ menu.addSeparator();\r
+ menu.addAction(tr("キャンセル"));\r
+\r
+ QAction *selected = menu.exec(view->mapToGlobal(event->pos()));\r
+ if (selected == actMove) {\r
+ moveItems(list, view->dir());\r
+ }\r
+ else if (selected == actCopy) {\r
+ copyItems(list, view->dir());\r
+ }\r
}\r
\r
void MainWindow::copyItems(const QFileInfoList &list, const QString &tgtDir)\r
{\r
- qDebug() << "MainWindow::copyItems();";\r
+ qDebug() << "MainWindow::copyItems();" << tgtDir;\r
\r
QSettings settings;\r
if (settings.value(IniKey_ConfirmCopy).toBool()) {\r
settings.setValue(IniKey_AutoCloseCopy, opDlg.autoClose());\r
}\r
\r
+void MainWindow::moveItems(const QFileInfoList &list, const QString &tgtDir)\r
+{\r
+ qDebug() << "MainWindow::moveItems();" << tgtDir;\r
+\r
+ QSettings settings;\r
+ if (settings.value(IniKey_ConfirmMove).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(true);\r
+\r
+ // 進捗ダイアログを表示して、処理を開始する\r
+ OperationDialog opDlg(this);\r
+ opDlg.setWindowTitle(tr("移動"));\r
+ opDlg.setWorker(worker);\r
+ opDlg.setAutoClose(settings.value(IniKey_AutoCloseMove).toBool());\r
+\r
+ opDlg.exec();\r
+\r
+ settings.setValue(IniKey_AutoCloseMove, opDlg.autoClose());\r
+}\r
+\r
void MainWindow::copyItems()\r
{\r
qDebug() << "MainWindow::copyItems";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- QFileInfoList list = view->selectedItems();\r
+ QFileInfoList list = m_activeView->selectedItems();\r
if (list.isEmpty()) {\r
return;\r
}\r
\r
- QString tgtPath = otherSideFolderView(view)->dir();\r
+ QString tgtPath = otherSideFolderView(m_activeView)->dir();\r
copyItems(list, tgtPath);\r
}\r
\r
{\r
qDebug() << "MainWindow::createFile";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
bool bOk;\r
QString name = QInputDialog::getText(\r
this, tr("ファイルを作成"), tr("ファイル名:"),\r
return;\r
}\r
\r
- QDir dir(view->dir());\r
+ QDir dir(m_activeView->dir());\r
QFile file(dir.absoluteFilePath(name));\r
if (!file.open(QIODevice::WriteOnly)) {\r
QMessageBox::critical(\r
openEditor(dir.absoluteFilePath(name));\r
}\r
\r
- view->refresh();\r
- view->searchItem(name);\r
+ m_activeView->refresh();\r
+ m_activeView->searchItem(name);\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::createFolder";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
bool bOk;\r
QString name = QInputDialog::getText(\r
this, tr("フォルダを作成"), tr("フォルダ名:"),\r
return;\r
}\r
\r
- QDir dir(view->dir());\r
+ QDir dir(m_activeView->dir());\r
if (!dir.mkpath(name)) {\r
QMessageBox::critical(\r
this, tr("エラー"),\r
else {\r
QSettings settings;\r
if (settings.value(IniKey_MoveAfterCreateFolder).toBool()) {\r
- view->setPath(dir.absoluteFilePath(name), true);\r
+ m_activeView->setPath(dir.absoluteFilePath(name), true);\r
}\r
\r
- view->refresh();\r
- view->searchItem(name);\r
+ m_activeView->refresh();\r
+ m_activeView->searchItem(name);\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::deleteItems";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- QFileInfoList list = view->selectedItems();\r
+ QFileInfoList list = m_activeView->selectedItems();\r
if (list.isEmpty()) {\r
return;\r
}\r
opDlg.setWorker(worker);\r
opDlg.setAutoClose(settings.value(IniKey_AutoCloseDelete).toBool());\r
\r
- int row = view->currentIndex().row();\r
+ int row = m_activeView->currentIndex().row();\r
\r
opDlg.exec();\r
- view->refresh();\r
+ m_activeView->refresh();\r
\r
- if (row >= view->model()->rowCount()) {\r
- row = view->model()->rowCount() - 1;\r
+ if (row >= m_activeView->model()->rowCount()) {\r
+ row = m_activeView->model()->rowCount() - 1;\r
}\r
-// view->selectRow(row);\r
- view->setCurrentIndex(view->model()->index(row, 1));\r
+ m_activeView->setCurrentIndex(m_activeView->model()->index(row, 1));\r
\r
settings.setValue(IniKey_AutoCloseDelete, opDlg.autoClose());\r
}\r
void MainWindow::open(const QModelIndex &index)\r
{\r
Q_UNUSED(index);\r
- qDebug() << "MainWindow::open";\r
-\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
+ qDebug() << "MainWindow::open" << index;\r
\r
- QFileInfo info = view->currentItem();\r
+ QFileInfo info = m_activeView->currentItem();\r
if (info.isDir()) {\r
- view->setPath(info.absoluteFilePath(), true);\r
+ m_activeView->setPath(info.absoluteFilePath(), true);\r
updateActions();\r
return;\r
}\r
\r
- setUpdatesEnabled(false);\r
-\r
- m_focusedView = view;\r
if (ui->pane3->setViewItem(info)) {\r
ui->pane3->setVisible(true);\r
ui->splitter->setVisible(false);\r
}\r
else {\r
ui->pane3->setVisible(false);\r
+ if (index.isValid()) {\r
+ QString path = QDir::toNativeSeparators(info.absoluteFilePath());\r
+ QDesktopServices::openUrl(QUrl("file:///" + path));\r
+ }\r
}\r
-\r
- setUpdatesEnabled(true);\r
}\r
\r
void MainWindow::openEditor(const QString &path)\r
{\r
qDebug() << "MainWindow::openEditor";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
QSettings settings;\r
QString exe = settings.value(IniKey_PathEditor).toString();\r
if (exe.isEmpty()) {\r
\r
QFileInfoList list;\r
if (path.isEmpty()) {\r
- list = view->selectedItems();\r
+ list = m_activeView->selectedItems();\r
}\r
else {\r
list << path;\r
#else\r
QString command = exe + files;\r
#endif\r
- if (!startProcess(command, view->dir(), tr("外部エディタの起動に失敗しました。"))) {\r
+ if (!startProcess(command, m_activeView->dir(), tr("外部エディタの起動に失敗しました。"))) {\r
qDebug() << command;\r
}\r
}\r
{\r
qDebug() << "MainWindow::openTerminal";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
QSettings settings;\r
QString exe = settings.value(IniKey_PathTerminal).toString();\r
if (exe.isEmpty()) {\r
}\r
\r
QSet<QString> dirs;\r
- foreach (const QFileInfo &info, view->selectedItems()) {\r
+ foreach (const QFileInfo &info, m_activeView->selectedItems()) {\r
if (info.isDir()) {\r
dirs.insert(info.absoluteFilePath());\r
}\r
#else\r
QString command = exe + " " + QQ(dir);\r
#endif\r
- if (!startProcess(command, view->dir(), tr("ターミナルの起動に失敗しました。"))) {\r
+ if (!startProcess(command, m_activeView->dir(), tr("ターミナルの起動に失敗しました。"))) {\r
qDebug() << command;\r
break;\r
}\r
{\r
qDebug() << "MainWindow::openArchiver";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
QSettings settings;\r
QString exe = settings.value(IniKey_PathArchiver).toString();\r
if (exe.isEmpty()) {\r
}\r
\r
QString files;\r
- foreach (const QFileInfo &info, view->selectedItems()) {\r
+ foreach (const QFileInfo &info, m_activeView->selectedItems()) {\r
files += " " + QQ(info.absoluteFilePath());\r
}\r
#ifdef Q_OS_MAC\r
#else\r
QString command = exe + files;\r
#endif\r
- if (!startProcess(command, view->dir(), tr("アーカイバの起動に失敗しました。"))) {\r
+ if (!startProcess(command, m_activeView->dir(), tr("アーカイバの起動に失敗しました。"))) {\r
qDebug() << command;\r
}\r
}\r
{\r
qDebug() << "MainWindow::openBookmark();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
QAction *action = qobject_cast<QAction*>(sender());\r
Q_CHECK_PTR(action);\r
\r
QSettings settings;\r
int i = action->data().toInt();\r
- view->setPath(settings.value(IniKey_BookmarkEntryPath(i)).toString(), true);\r
+ m_activeView->setPath(settings.value(IniKey_BookmarkEntryPath(i)).toString(), true);\r
}\r
\r
void MainWindow::refresh()\r
{\r
qDebug() << "MainWindow::refresh();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->refresh();\r
+ m_activeView->refresh();\r
}\r
\r
void MainWindow::renameItems()\r
{\r
qDebug() << "MainWindow::renameItems";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- QFileInfoList list = view->selectedItems();\r
+ QFileInfoList list = m_activeView->selectedItems();\r
if (list.isEmpty()) {\r
return;\r
}\r
else {\r
dlg = new RenameMultiDialog(this);\r
}\r
- dlg->setWorkingDirectory(view->dir());\r
+ dlg->setWorkingDirectory(m_activeView->dir());\r
dlg->setNames(list);\r
int dlgResult = dlg->exec();\r
if (dlgResult != QDialog::Accepted || dlg->renameMap().isEmpty()) {\r
opDlg.setAutoClose(settings.value(IniKey_AutoCloseRename).toBool());\r
\r
opDlg.exec();\r
- view->refresh();\r
+ m_activeView->refresh();\r
\r
QFileInfo info(dlg->renameMap().first());\r
- view->searchItem(info.fileName());\r
+ m_activeView->searchItem(info.fileName());\r
\r
settings.setValue(IniKey_AutoCloseRename, opDlg.autoClose());\r
}\r
{\r
qDebug() << "MainWindow::shellExecute";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- foreach (const QFileInfo &info, view->selectedItems()) {\r
+ foreach (const QFileInfo &info, m_activeView->selectedItems()) {\r
QString path = QDir::toNativeSeparators(info.absoluteFilePath());\r
QDesktopServices::openUrl(QUrl("file:///" + path));\r
}\r
\r
void MainWindow::showBookmarkDialog()\r
{\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
+ qDebug() << "MainWindow::showBookmarkDialog();";\r
\r
BookmarkDialog dlg(this);\r
dlg.setEditMode(false);\r
int n = dlg.selectedIndex();\r
\r
QSettings settings;\r
- view->setPath(settings.value(IniKey_BookmarkEntryPath(n)).toString(), true);\r
+ m_activeView->setPath(settings.value(IniKey_BookmarkEntryPath(n)).toString(), true);\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::showFilterDialog();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- QString filters = view->nameFilters().join(" ");\r
+ QString filters = m_activeView->nameFilters().join(" ");\r
\r
QInputDialog dlg(this);\r
dlg.setInputMode(QInputDialog::TextInput);\r
dlg.resize(width() * 0.8, dlg.height());\r
\r
if (dlg.exec() == QDialog::Accepted) {\r
- static_cast<FolderPanel*>(view->parent())->setNameFilters(dlg.textValue());\r
- int row = view->currentIndex().row();\r
+ static_cast<FolderPanel*>(m_activeView->parent())->setNameFilters(dlg.textValue());\r
+ int row = m_activeView->currentIndex().row();\r
\r
- view->refresh();\r
+ m_activeView->refresh();\r
\r
- if (row >= view->model()->rowCount()) {\r
- row = view->model()->rowCount() - 1;\r
+ if (row >= m_activeView->model()->rowCount()) {\r
+ row = m_activeView->model()->rowCount() - 1;\r
}\r
-// view->selectRow(row);\r
- view->setCurrentIndex(view->model()->index(row, 1));\r
+\r
+ m_activeView->setCurrentIndex(m_activeView->model()->index(row, 1));\r
\r
}\r
}\r
{\r
qDebug() << "MainWindow::showHistoryDialog();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- FolderView *vOther = otherSideFolderView(view);\r
+ FolderView *vOther = otherSideFolderView(m_activeView);\r
\r
HistoryDialog dlg(this);\r
- if (view->side() == "Left") {\r
+ if (m_activeView->side() == "Left") {\r
dlg.setDefaultLeft(true);\r
- dlg.setHistory(view->history(), vOther->history());\r
+ dlg.setHistory(m_activeView->history(), vOther->history());\r
}\r
else {\r
dlg.setDefaultLeft(false);\r
- dlg.setHistory(vOther->history(), view->history());\r
+ dlg.setHistory(vOther->history(), m_activeView->history());\r
}\r
\r
if (dlg.exec() == QDialog::Accepted) {\r
- if (view->side() == dlg.selectedSide()) {\r
- view->setHistoryIndexAt(dlg.selectedIndex());\r
+ if (m_activeView->side() == dlg.selectedSide()) {\r
+ m_activeView->setHistoryIndexAt(dlg.selectedIndex());\r
}\r
else {\r
- view->setPath(vOther->history()->at(dlg.selectedIndex()), true);\r
+ m_activeView->setPath(vOther->history()->at(dlg.selectedIndex()), true);\r
}\r
}\r
}\r
{\r
qDebug() << "MainWindow::showSortDialog();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
SortDialog dlg(this);\r
- dlg.setRightOrLeft(view->side());\r
+ dlg.setRightOrLeft(m_activeView->side());\r
\r
if (dlg.exec() == QDialog::Accepted) {\r
- view->setSorting();\r
- view->refresh();\r
+ m_activeView->setSorting();\r
+ m_activeView->refresh();\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::switchHalfMode();" << checked;\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
AnyView *pane = static_cast<AnyView*>(\r
- otherSideFolderView(view)->parent()->parent());\r
+ otherSideFolderView(m_activeView)->parent()->parent());\r
Q_CHECK_PTR(pane);\r
\r
if (checked) {\r
// ハーフモードへ移行する\r
setViewMode(ModeHalfView);\r
- pane->setViewItem(view->currentItem());\r
+ pane->setViewItem(m_activeView->currentItem());\r
}\r
else {\r
// ハーフモードを解除する\r
updateActions();\r
}\r
\r
-//void MainWindow::searchItem(const QString &text)\r
-//{\r
-// qDebug() << "MainWindow::searchItem" << text;\r
-\r
-// SearchBox *box = qobject_cast<SearchBox*>(qApp->focusWidget());\r
-// Q_CHECK_PTR(box);\r
-\r
-// if (text.right(1) == "/") {\r
-// // '/'が入力されたら、検索終了\r
-// box->setText(text.left(text.length() - 1));\r
-// ui->action_Search->setChecked(false);\r
-// }\r
-// else {\r
-// FolderPanel *fp = qobject_cast<FolderPanel*>(box->parent());\r
-// Q_CHECK_PTR(fp);\r
-\r
-// fp->folderView()->searchItem(box->text());\r
-// }\r
-//}\r
-\r
void MainWindow::searchNext()\r
{\r
qDebug() << "MainWindow::searchNext";\r
SearchBox *box = qobject_cast<SearchBox*>(qApp->focusWidget());\r
Q_CHECK_PTR(box);\r
\r
- FolderPanel *fp = qobject_cast<FolderPanel*>(box->parent());\r
- Q_CHECK_PTR(fp);\r
-\r
- fp->folderView()->searchNext(box->text());\r
+ m_activeView->searchNext(box->text());\r
}\r
\r
void MainWindow::searchPrev()\r
SearchBox *box = qobject_cast<SearchBox*>(qApp->focusWidget());\r
Q_CHECK_PTR(box);\r
\r
- FolderPanel *fp = qobject_cast<FolderPanel*>(box->parent());\r
- Q_CHECK_PTR(fp);\r
-\r
- fp->folderView()->searchPrev(box->text());\r
+ m_activeView->searchPrev(box->text());\r
}\r
\r
void MainWindow::setCursorToBegin()\r
font.setPointSize(font.pointSize() + diff);\r
settings.setValue(IniKey_ViewFont, font);\r
\r
- ui->pane1->folderPanel()->folderView()->updateAppearance();\r
- ui->pane2->folderPanel()->folderView()->updateAppearance();\r
+ ui->pane1->folderPanel()->updateAppearance();\r
+ ui->pane2->folderPanel()->updateAppearance();\r
}\r
\r
// テキストビューのフォントサイズ変更\r
{\r
qDebug() << "MainWindow::setPathFromOther();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- FolderView *other = otherSideFolderView(view);\r
+ FolderView *other = otherSideFolderView(m_activeView);\r
\r
- view->setPath(other->dir(), true);\r
+ m_activeView->setPath(other->dir(), true);\r
}\r
\r
void MainWindow::setPathToHome()\r
{\r
qDebug() << "MainWindow::setPathToHome();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->setPath(QDir::homePath(), true);\r
+ m_activeView->setPath(QDir::homePath(), true);\r
}\r
\r
void MainWindow::setPathToOther()\r
{\r
qDebug() << "MainWindow::setPathToOther();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
+ FolderView *other = otherSideFolderView(m_activeView);\r
\r
- FolderView *other = otherSideFolderView(view);\r
-\r
- other->setPath(view->dir(), true);\r
+ other->setPath(m_activeView->dir(), true);\r
}\r
\r
void MainWindow::setPathToParent()\r
{\r
qDebug() << "MainWindow::setPathToParent();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- QDir dir(view->dir());\r
+ QDir dir(m_activeView->dir());\r
if (!dir.isRoot()) {\r
dir.cdUp();\r
- view->setPath(dir.absolutePath(), true);\r
+ m_activeView->setPath(dir.absolutePath(), true);\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::setPathToRoot();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
-\r
- view->setPath(QDir::rootPath(), true);\r
+ m_activeView->setPath(QDir::rootPath(), true);\r
}\r
\r
void MainWindow::toggleSearchBox(bool checked)\r
\r
if (checked) {\r
setViewMode(m_viewMode | ModeSearch);\r
- view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
\r
- box = view->parent()->findChild<SearchBox*>("searchBox");\r
+ box = m_activeView->parent()->findChild<SearchBox*>("searchBox");\r
Q_CHECK_PTR(box);\r
\r
box->setVisible(true);\r
\r
PreferenceDialog dlg(this);\r
if (dlg.exec() == QDialog::Accepted) {\r
- bool dark1 = !ui->pane1->folderPanel()->folderView()->hasFocus();\r
- bool dark2 = !ui->pane2->folderPanel()->folderView()->hasFocus();\r
+ bool dark1 = m_activeView != ui->pane1->folderPanel()->folderView();\r
+ bool dark2 = m_activeView != ui->pane2->folderPanel()->folderView();\r
\r
- ui->pane1->folderPanel()->locationBox()->updateAppearance(dark1);\r
- ui->pane2->folderPanel()->locationBox()->updateAppearance(dark2);\r
- ui->pane1->folderPanel()->folderView()->updateAppearance(dark1);\r
- ui->pane2->folderPanel()->folderView()->updateAppearance(dark2);\r
+ ui->pane1->folderPanel()->updateAppearance(dark1);\r
+ ui->pane2->folderPanel()->updateAppearance(dark2);\r
ui->pane1->textView()->updateAppearance();\r
ui->pane2->textView()->updateAppearance();\r
ui->pane3->textView()->updateAppearance();\r
ui->statusBar->findChild<QLabel*>("Right")->setText("");\r
ui->pane3->setVisible(false);\r
ui->splitter->setVisible(true);\r
- m_focusedView->setFocus();\r
+ m_activeView->setFocus();\r
}\r
\r
void MainWindow::initActionConnections()\r
connect(ui->view_HalfMode, SIGNAL(toggled(bool)), this, SLOT(switchHalfMode(bool)));\r
connect(ui->view_Hidden, SIGNAL(toggled(bool)), this, SLOT(toggleShowHiddenFiles(bool)));\r
connect(ui->view_Refresh, SIGNAL(triggered()), this, SLOT(refresh()));\r
+\r
connect(ui->view_Sort, SIGNAL(triggered()), this, SLOT(showSortDialog()));\r
connect(ui->view_Swap, SIGNAL(triggered()), this, SLOT(swapView()));\r
connect(ui->view_System, SIGNAL(toggled(bool)), this, SLOT(toggleShowSystemFiles(bool)));\r