#include "common.h"\r
#include "version.h"\r
-#include "mainwindow.h"\r
#include "preferencedialog.h"\r
#include "folderview.h"\r
#include "searchbox.h"\r
#include "locationbox.h"\r
-#include "ui_mainwindow.h"\r
#include "copymoveworker.h"\r
#include "operationdialog.h"\r
#include "overwritedialog.h"\r
#include "historydialog.h"\r
#include "sortdialog.h"\r
#include "simpletextview.h"\r
+#include "simpleimageview.h"\r
+#include "mainwindow.h"\r
+#include "ui_mainwindow.h"\r
\r
#include <QCheckBox>\r
#include <QCloseEvent>\r
#include <QFileDialog>\r
#include <folderpanel.h>\r
\r
-MainWindow* getMainWnd()\r
-{\r
- foreach (QWidget *w, qApp->topLevelWidgets()) {\r
- if (w->objectName() == "MainWindow") {\r
- return static_cast<MainWindow*>(w);\r
- }\r
- }\r
- qDebug() << "MainWindow not found !?";\r
- return NULL;\r
-}\r
-\r
MainWindow::MainWindow(QWidget *parent) :\r
QMainWindow(parent),\r
ui(new Ui::MainWindow),\r
m_focusedView(NULL),\r
- m_overwriteDialog(NULL)\r
+ m_overwriteDialog(NULL),\r
+ m_viewMode(ModeBasic)\r
{\r
+ qDebug() << ">>>>>>>>>> MainWindowの構築開始 <<<<<";\r
ui->setupUi(this);\r
\r
m_overwriteDialog = new OverWriteDialog(this);\r
\r
initActionConnections();\r
connect(qApp, SIGNAL(focusChanged(QWidget*,QWidget*)), this, SLOT(focusChange(QWidget*,QWidget*)));\r
- connect(ui->pane3->textView(), SIGNAL(viewFinished(QWidget*)), this, SLOT(viewFinish(QWidget*)));\r
+ connect(ui->pane3->textView(), SIGNAL(viewFinished()), this, SLOT(viewFinish()));\r
+ connect(ui->pane3->imageView(), SIGNAL(viewFinished()), this, SLOT(viewFinish()));\r
+ connect(ui->pane1->textView(), SIGNAL(fileInfo(QString)), this, SLOT(showFileInfo(QString)));\r
+ connect(ui->pane2->textView(), SIGNAL(fileInfo(QString)), this, SLOT(showFileInfo(QString)));\r
+ connect(ui->pane3->textView(), SIGNAL(fileInfo(QString)), this, SLOT(showFileInfo(QString)));\r
+ connect(ui->pane1->imageView(), SIGNAL(fileInfo(QString)), this, SLOT(showFileInfo(QString)));\r
+ connect(ui->pane2->imageView(), SIGNAL(fileInfo(QString)), this, SLOT(showFileInfo(QString)));\r
+ connect(ui->pane3->imageView(), SIGNAL(fileInfo(QString)), this, SLOT(showFileInfo(QString)));\r
\r
// ビューアは初期状態で非表示\r
ui->pane3->setVisible(false);\r
\r
+ // ステータスバーにウィジェットを設定する\r
+ QLabel *label = new QLabel("", this);\r
+ label->setAlignment(Qt::AlignRight);\r
+ label->setObjectName("Right");\r
+ ui->statusBar->addPermanentWidget(label, 0);\r
+\r
for (int i = 1; i <= 2; i++) {\r
+ // pane1 or pane2\r
AnyView *anyView = findChild<AnyView*>(QString("pane%1").arg(i));\r
Q_CHECK_PTR(anyView);\r
\r
FolderPanel *fp = anyView->findChild<FolderPanel*>("folderPanel");\r
Q_CHECK_PTR(fp);\r
- fp->setObjectName(QString("folderPanel%1").arg(i));\r
\r
- LocationBox *locationBox = fp->locationBox();\r
- FolderView *folderView = fp->folderView();\r
- SearchBox *searchBox = fp->serachBox();\r
-\r
- if (i == 1) {\r
- folderView->setObjectName("folderView1");\r
- }\r
- else {\r
- folderView->setObjectName("folderView2");\r
- }\r
-\r
- // シグナル&スロット\r
- connect(folderView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(open(QModelIndex)));\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
- searchBox->setVisible(false);\r
-\r
- // ロケーションボックスを初期化する\r
- locationBox->initialize();\r
-\r
- // フィルタを初期化する\r
- setNameFilters(folderView);\r
-\r
- // ソートを初期化する\r
- setSorting(folderView);\r
+ // FolderPanelとFolderViewの名前を変更する\r
+ fp->setObjectName(QString("folderPanel%1").arg(i));\r
+ fp->folderView()->setObjectName(QString("folderView%1").arg(i));\r
\r
- // フォルダビューを初期化する\r
- folderView->initialize();\r
+ fp->initialize(this);\r
}\r
\r
QSettings settings;\r
}\r
\r
ui->pane2->changeView(AnyView::ViewFolder);\r
- ui->pane2->folderPanel()->folderView()->repaint();\r
+ ui->pane2->repaint();\r
\r
ui->pane1->changeView(AnyView::ViewFolder);\r
- ui->pane1->folderPanel()->folderView()->repaint();\r
+ ui->pane1->repaint();\r
+\r
+ qDebug() << ">>>>>>>>>> MainWindowの構築終了 <<<<<";\r
}\r
\r
MainWindow::~MainWindow()\r
delete ui;\r
}\r
\r
-FolderView* MainWindow::otherSideView(const FolderView *view) const\r
-{\r
- qDebug() << "MainWindow::otherSideView()" << view->objectName();\r
-\r
- if (view == ui->pane1->folderPanel()->folderView()) {\r
- return ui->pane2->folderPanel()->folderView();\r
- }\r
-\r
- Q_ASSERT(view == ui->pane2->folderPanel()->folderView());\r
- return ui->pane1->folderPanel()->folderView();\r
-}\r
-\r
void MainWindow::focusChange(QWidget *old, QWidget *now)\r
{\r
- Q_UNUSED(old);\r
- qDebug() << "MainWindow::focusChange";\r
- if (now != NULL) {\r
- qDebug() << "Now Focus" << now->objectName();\r
- }\r
+ qDebug() << ">>>>> フォーカス変更";\r
+ if (old) qDebug() << "old is" << old->objectName();\r
+ if (now) qDebug() << "now is" << now->objectName();\r
\r
- if (now &&\r
- (now == ui->pane1->folderPanel()->folderView() ||\r
- now == ui->pane2->folderPanel()->folderView()))\r
+ // 検索ボックスがフォーカスを失ったら、非表示にする\r
+ if (old == ui->pane1->folderPanel()->searchBox() ||\r
+ old == ui->pane2->folderPanel()->searchBox())\r
{\r
- ui->statusBar->showMessage(folderView()->currentItem().absoluteFilePath());\r
+ ui->action_Search->setChecked(false);\r
}\r
\r
- if (old &&\r
- (old == ui->pane1->folderPanel()->serachBox() ||\r
- old == ui->pane2->folderPanel()->serachBox()))\r
+ // フォルダビューにフォーカスが移ったら、ステータスバーの表示を更新する\r
+ if (now == ui->pane1->folderPanel()->folderView() ||\r
+ now == ui->pane2->folderPanel()->folderView())\r
{\r
- old->setVisible(false);\r
+ FolderView *view = static_cast<FolderView*>(now);\r
+ ui->statusBar->showMessage(view->currentItem().absoluteFilePath());\r
}\r
\r
- updateActions();\r
+ if (now) {\r
+ updateActions();\r
+ }\r
}\r
\r
void MainWindow::executeCommand()\r
{\r
qDebug() << "MainWindow::executeCommand";\r
\r
- FolderView *v = folderView();\r
- Q_ASSERT(v);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
\r
- QFileInfoList list = v->selectedItems();\r
+ QFileInfoList list = view->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, v->dir(), tr("コマンドの実行に失敗しました。"));\r
+ startProcess(command, view->dir(), tr("コマンドの実行に失敗しました。"));\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::historyBack();";\r
\r
- if (folderView()->historyBack()) {\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ if (view->historyBack()) {\r
updateActions();\r
}\r
}\r
{\r
qDebug() << "MainWindow::historyForward();";\r
\r
- if (folderView()->historyForward()) {\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ if (view->historyForward()) {\r
updateActions();\r
}\r
}\r
{\r
qDebug() << "MainWindow::itemFound";\r
\r
- SearchBox *box = searchBox(static_cast<FolderView*>(sender()));\r
+ SearchBox *box = sender()->parent()->findChild<SearchBox*>("searchBox");\r
+ Q_CHECK_PTR(box);\r
+\r
QPalette pal = box->palette();\r
pal.setColor(QPalette::Text, QPalette().text().color());\r
box->setPalette(pal);\r
{\r
qDebug() << "MainWindow::itemNotFound";\r
\r
- SearchBox *box = searchBox(static_cast<FolderView*>(sender()));\r
+ SearchBox *box = sender()->parent()->findChild<SearchBox*>("searchBox");\r
+ Q_CHECK_PTR(box);\r
+\r
QPalette pal = box->palette();\r
pal.setColor(QPalette::Text, Qt::red);\r
box->setPalette(pal);\r
{\r
qDebug() << "MainWindow::markAll();";\r
\r
- folderView()->setCheckStateAll(true);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->setCheckStateAll(true);\r
}\r
\r
void MainWindow::markAllFiles()\r
{\r
qDebug() << "MainWindow::markAllFiles();";\r
\r
- folderView()->setCheckStateAllFiles();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->setCheckStateAllFiles();\r
}\r
\r
void MainWindow::markAllOff()\r
{\r
qDebug() << "MainWindow::markAllOff();";\r
\r
- folderView()->setCheckStateAll(false);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->setCheckStateAll(false);\r
}\r
\r
void MainWindow::markInvert()\r
{\r
qDebug() << "MainWindow::markInvert();";\r
\r
- folderView()->invertCheckState();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->invertCheckState();\r
}\r
\r
void MainWindow::markToggle()\r
{\r
qDebug() << "MainWindow::markToggle();";\r
\r
- folderView()->toggleCheckState(folderView()->currentIndex());\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->toggleCheckState(view->currentIndex());\r
}\r
\r
void MainWindow::moveItems()\r
{\r
qDebug() << "MainWindow::moveItems";\r
\r
- FolderView *v = folderView();\r
- QFileInfoList list = v->selectedItems();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ QFileInfoList list = view->selectedItems();\r
if (list.isEmpty()) {\r
return;\r
}\r
m_overwriteDialog->reset();\r
\r
// ワーカースレッドを作成する\r
- FolderView *other = otherSideView(v);\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
// ui->folderView2->refresh();\r
}\r
\r
-//void MainWindow::keyPress(QKeyEvent *event)\r
-//{\r
-// QString ksq = KeyEventToSequence(event);\r
-// if (ksq == "") {\r
-// event->ignore();\r
-// return;\r
-// }\r
-\r
-// qDebug() << "MainWindow::keyPress" << ksq;\r
-\r
-// if (ProcessShortcut(ksq, this)) {\r
-// event->accept();\r
-// return;\r
-// }\r
-\r
-// event->ignore();\r
-//}\r
-\r
void MainWindow::leftKeyPress()\r
{\r
qDebug() << "MainWindow::leftKeyPress();";\r
setPathToParent();\r
}\r
else if (ui->pane2->folderPanel()->folderView()->hasFocus()) {\r
-// ui->folderView1->setFocus();\r
- ui->pane1->setFocus();\r
+ ui->pane1->folderPanel()->folderView()->setFocus();\r
}\r
}\r
\r
QApplication::sendEvent(ui->pane3->textView(), &event);\r
}\r
else if (ui->pane1->folderPanel()->folderView()->hasFocus()) {\r
- // ui->folderView2->setFocus();\r
- ui->pane2->setFocus();\r
+ ui->pane2->folderPanel()->folderView()->setFocus();\r
}\r
else if (ui->pane2->folderPanel()->folderView()->hasFocus()) {\r
setPathToParent();\r
}\r
}\r
\r
+void MainWindow::showFileInfo(const QString &str)\r
+{\r
+ qDebug() << "MainWindow::showFileInfo();" << str;\r
+ QLabel *label = ui->statusBar->findChild<QLabel*>("Right");\r
+ Q_CHECK_PTR(label);\r
+\r
+// label->resize(QFontMetrics(label->font()).boundingRect(str).width(),\r
+// label->height());\r
+ label->setText(str);\r
+}\r
+\r
void MainWindow::chooseFolder()\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("フォルダを選択"), folderView()->dir());\r
+ this, tr("フォルダを選択"), view->dir());\r
if (!path.isEmpty()) {\r
- folderView()->setPath(path, true);\r
+ view->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(folderView()->currentItem().fileName());\r
+ clipboard->setText(view->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(folderView()->currentItem().absoluteFilePath());\r
+ clipboard->setText(view->currentItem().absoluteFilePath());\r
}\r
\r
void MainWindow::askOverWrite(QString *copyMethod,\r
\r
void MainWindow::currentChange(const QFileInfo &info)\r
{\r
- qDebug() << "MainWindow::currentChange();";\r
+ qDebug() << ">>>>> カーソル変更 <<<<<";\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
+ FolderView *view = static_cast<FolderView*>(sender());\r
+ Q_CHECK_PTR(view);\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
+ if (!view->hasFocus()) {\r
+ return;\r
}\r
\r
- if (ui->view_HalfMode->isChecked()) {\r
- FolderView *view = static_cast<FolderView*>(sender());\r
- if (!view->hasFocus()) {\r
- return;\r
- }\r
+ // ステータスバーにカーソルのフルパスを表示する\r
+ ui->statusBar->showMessage(info.absoluteFilePath());\r
\r
- if (ui->pane1->folderPanel()->folderView()->hasFocus()) {\r
- ui->pane2->setViewItem(folderView()->currentItem());\r
- }\r
- else {\r
- Q_ASSERT(ui->pane2->folderPanel()->folderView()->hasFocus());\r
- ui->pane1->setViewItem(folderView()->currentItem());\r
+ // ハーフモードで変更された場合\r
+ if (m_viewMode & ModeHalfView) {\r
+ AnyView *otherSide = static_cast<AnyView*>(\r
+ otherSideFolderView(view)->parent()->parent());\r
+ Q_CHECK_PTR(otherSide);\r
+\r
+ if (!otherSide->setViewItem(view->currentItem())) {\r
+ showFileInfo("");\r
}\r
- updateActions();\r
}\r
+\r
+ updateActions();\r
}\r
\r
-void MainWindow::dataChange()\r
+void MainWindow::dropAccept(const QFileInfoList &list)\r
{\r
- qDebug() << "MainWindow::dataChange();";\r
+ qDebug() << "MainWindow::dropAccept();";\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
+ Q_CHECK_PTR(view);\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
+ copyItems(list, view->dir());\r
}\r
\r
void MainWindow::copyItems(const QFileInfoList &list, const QString &tgtDir)\r
{\r
+ qDebug() << "MainWindow::copyItems();";\r
+\r
QSettings settings;\r
if (settings.value(IniKey_ConfirmCopy).toBool()) {\r
if (QMessageBox::question(this, tr("確認"), tr("コピーを実行しますか?"))\r
{\r
qDebug() << "MainWindow::copyItems";\r
\r
- FolderView *v = folderView();\r
- QFileInfoList list = v->selectedItems();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ QFileInfoList list = view->selectedItems();\r
if (list.isEmpty()) {\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
- != QMessageBox::Yes)\r
- {\r
- return;\r
- }\r
- }\r
-\r
- // 上書き確認ダイアログを初期化する\r
- m_overwriteDialog->reset();\r
-\r
- // ワーカースレッドを作成する\r
- FolderView *other = otherSideView(v);\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(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
-#endif\r
+ QString tgtPath = otherSideFolderView(view)->dir();\r
+ copyItems(list, tgtPath);\r
}\r
\r
void MainWindow::createFile()\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(folderView()->dir());\r
+ QDir dir(view->dir());\r
QFile file(dir.absoluteFilePath(name));\r
if (!file.open(QIODevice::WriteOnly)) {\r
QMessageBox::critical(\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(folderView()->dir());\r
+ QDir dir(view->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
- folderView()->setPath(dir.absoluteFilePath(name), true);\r
- updateActions();\r
+ view->setPath(dir.absoluteFilePath(name), true);\r
}\r
}\r
}\r
{\r
qDebug() << "MainWindow::deleteItems";\r
\r
- FolderView *v = folderView();\r
- QFileInfoList list = v->selectedItems();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ QFileInfoList list = view->selectedItems();\r
if (list.isEmpty()) {\r
return;\r
}\r
Q_UNUSED(index);\r
qDebug() << "MainWindow::open";\r
\r
- FolderView *v = folderView();\r
- Q_ASSERT(v);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
\r
- QFileInfo info = v->currentItem();\r
+ QFileInfo info = view->currentItem();\r
if (info.isDir()) {\r
- v->setPath(info.absoluteFilePath(), true);\r
+ view->setPath(info.absoluteFilePath(), true);\r
updateActions();\r
return;\r
}\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
- shellExecute();\r
- return;\r
- }\r
- }\r
- }\r
+ setUpdatesEnabled(false);\r
\r
- foreach (QObject *obj, this->children()) {\r
- QAction *action = qobject_cast<QAction*>(obj);\r
- if (action) {\r
- if (action->objectName() == "help_About" ||\r
- action->objectName() == "check_Update" ||\r
- action->objectName() == "copy_Fullpath" ||\r
- action->objectName() == "copy_Filename" ||\r
- action->objectName() == "action_Quit" ||\r
- action->objectName() == "action_Setting")\r
- {\r
- continue;\r
- }\r
- action->setEnabled(false);\r
- }\r
+ m_focusedView = view;\r
+ if (ui->pane3->setViewItem(info)) {\r
+ ui->pane3->setVisible(true);\r
+ ui->splitter->setVisible(false);\r
+\r
+ setViewMode(ModeFullView);\r
+ // focusChangeでupdateActionsされるので不要\r
+// updateActions();\r
+ }\r
+ else {\r
+ ui->pane3->setVisible(false);\r
}\r
\r
- m_focusedView = folderView();\r
- ui->pane3->setViewItem(info);\r
- ui->splitter->setVisible(false);\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_EditorPath).toString();\r
if (exe.isEmpty()) {\r
return;\r
}\r
\r
- FolderView *v = folderView();\r
- Q_ASSERT(v);\r
-\r
QFileInfoList list;\r
if (path.isEmpty()) {\r
- list = v->selectedItems();\r
+ list = view->selectedItems();\r
}\r
else {\r
list << path;\r
if (!startProcess(command, info.absolutePath(), tr("外部エディタの起動に失敗しました。"))) {\r
break;\r
}\r
+ Sleep(100);\r
}\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_TerminalPath).toString();\r
if (exe.isEmpty()) {\r
return;\r
}\r
\r
- FolderView *v = folderView();\r
- Q_ASSERT(v);\r
-\r
- foreach (const QFileInfo &info, v->selectedItems()) {\r
+ foreach (const QFileInfo &info, view->selectedItems()) {\r
QString opt = settings.value(IniKey_TerminalOption).toString();\r
replaceVars(opt, info);\r
\r
if (!startProcess(command, info.absolutePath(), tr("ターミナルの起動に失敗しました。"))) {\r
break;\r
}\r
+ Sleep(100);\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::refresh();";\r
\r
- folderView()->refresh();\r
- updateActions();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->refresh();\r
}\r
\r
void MainWindow::renameItems()\r
{\r
qDebug() << "MainWindow::renameItems";\r
\r
- FolderView *v = folderView();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
\r
- QFileInfoList list = v->selectedItems();\r
+ QFileInfoList list = view->selectedItems();\r
if (list.isEmpty()) {\r
return;\r
}\r
else {\r
dlg = new RenameMultiDialog(this);\r
}\r
- dlg->setWorkingDirectory(v->dir());\r
+ dlg->setWorkingDirectory(view->dir());\r
dlg->setNames(list);\r
int dlgResult = dlg->exec();\r
if (dlgResult != QDialog::Accepted || dlg->renameMap().isEmpty()) {\r
qDebug() << "MainWindow::retrieveStart();" << path;\r
\r
ui->statusBar->showMessage(tr("ファイルリストを取得しています..."));\r
- if (sender() == ui->pane1->folderPanel()->folderView()) {\r
- ui->pane1->folderPanel()->locationBox()->setText(path);\r
- }\r
- else {\r
- Q_ASSERT(sender() == ui->pane2->folderPanel()->folderView());\r
- ui->pane2->folderPanel()->locationBox()->setText(path);\r
- }\r
}\r
\r
void MainWindow::shellExecute()\r
{\r
qDebug() << "MainWindow::shellExecute";\r
\r
- FolderView *v = folderView();\r
- Q_ASSERT(v);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
\r
- QFileInfoList list = v->selectedItems();\r
- foreach (const QFileInfo &info, list) {\r
+ foreach (const QFileInfo &info, view->selectedItems()) {\r
QString path = QDir::toNativeSeparators(info.absoluteFilePath());\r
QDesktopServices::openUrl(QUrl("file:///" + path));\r
}\r
{\r
qDebug() << "MainWindow::showFilterDialog();";\r
\r
- QString filters = folderView()->nameFilters().join(" ");\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ QString filters = view->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
- setNameFilters(folderView(), dlg.textValue());\r
+ static_cast<FolderPanel*>(view->parent())->setNameFilters(dlg.textValue());\r
+ view->refresh();\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::showHistoryDialog();";\r
\r
- FolderView *v = folderView();\r
- FolderView *vOther = otherSideView(v);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ FolderView *vOther = otherSideFolderView(view);\r
\r
HistoryDialog dlg(this);\r
- if (v->side() == "Left") {\r
+ if (view->side() == "Left") {\r
dlg.setDefaultLeft(true);\r
- dlg.setHistory(v->history(), vOther->history());\r
+ dlg.setHistory(view->history(), vOther->history());\r
}\r
else {\r
dlg.setDefaultLeft(false);\r
- dlg.setHistory(vOther->history(), v->history());\r
+ dlg.setHistory(vOther->history(), view->history());\r
}\r
\r
if (dlg.exec() == QDialog::Accepted) {\r
- if (v->side() == dlg.selectedSide()) {\r
- v->setHistoryIndexAt(dlg.selectedIndex());\r
+ if (view->side() == dlg.selectedSide()) {\r
+ view->setHistoryIndexAt(dlg.selectedIndex());\r
}\r
else {\r
- v->setPath(vOther->history()->at(dlg.selectedIndex()), true);\r
+ view->setPath(vOther->history()->at(dlg.selectedIndex()), true);\r
}\r
- updateActions();\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(folderView()->side());\r
+ dlg.setRightOrLeft(view->side());\r
\r
- if (dlg.exec() != QDialog::Accepted) {\r
- return;\r
+ if (dlg.exec() == QDialog::Accepted) {\r
+ view->setSorting();\r
+ view->refresh();\r
}\r
-\r
- setSorting(folderView());\r
}\r
\r
void MainWindow::swapView()\r
{\r
qDebug() << "MainWindow::switchHalfMode();" << checked;\r
\r
- FolderView *view;\r
- if (checked) {\r
- view = ui->pane1->folderPanel()->folderView();\r
- if (view->hasFocus()) {\r
- ui->pane2->setViewItem(view->currentItem());\r
- updateActions();\r
-// view->setFocus();\r
- return;\r
- }\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
\r
- view = ui->pane2->folderPanel()->folderView();\r
- if (view->hasFocus()) {\r
- ui->pane1->setViewItem(view->currentItem());\r
- updateActions();\r
-// view->setFocus();\r
- return;\r
- }\r
+ AnyView *pane = static_cast<AnyView*>(\r
+ otherSideFolderView(view)->parent()->parent());\r
+ Q_CHECK_PTR(pane);\r
+\r
+ if (checked) {\r
+ // ハーフモードへ移行する\r
+ setViewMode(ModeHalfView);\r
+ pane->setViewItem(view->currentItem());\r
}\r
else {\r
- view = ui->pane1->folderPanel()->folderView();\r
- if (view->isVisible()) {\r
- ui->pane2->changeView(AnyView::ViewFolder);\r
- updateActions();\r
- return;\r
- }\r
-\r
- view = ui->pane2->folderPanel()->folderView();\r
- if (view->isVisible()) {\r
- ui->pane1->changeView(AnyView::ViewFolder);\r
- updateActions();\r
- return;\r
- }\r
+ // ハーフモードを解除する\r
+ setViewMode(ModeBasic);\r
+ pane->changeView(AnyView::ViewFolder);\r
}\r
+ updateActions();\r
}\r
\r
-void MainWindow::setSorting(FolderView *view)\r
-{\r
- qDebug() << "MainWindow::setSorting();" << view->objectName();\r
+//void MainWindow::setSorting(FolderView *view)\r
+//{\r
+// qDebug() << "MainWindow::setSorting();" << view->objectName();\r
\r
- QSettings settings;\r
- QDir::SortFlags flags;\r
+// QSettings settings;\r
+// QDir::SortFlags flags;\r
\r
- int sortBy = settings.value(view->side() + slash + IniKey_SortBy).toInt();\r
- switch (sortBy) {\r
- case SortByDate: flags |= QDir::Time; break;\r
- case SortBySize: flags |= QDir::Size; break;\r
- case SortByType: flags |= QDir::Type; break;\r
- default: flags |= QDir::Name; break;\r
- }\r
+// int sortBy = settings.value(view->side() + slash + IniKey_SortBy).toInt();\r
+// switch (sortBy) {\r
+// case SortByDate: flags |= QDir::Time; break;\r
+// case SortBySize: flags |= QDir::Size; break;\r
+// case SortByType: flags |= QDir::Type; break;\r
+// default: flags |= QDir::Name; break;\r
+// }\r
\r
- // デフォルトだと文字列は昇順で、数値は降順…orz\r
- int orderBy = settings.value(view->side() + slash + IniKey_OrderBy).toInt();\r
- if (((sortBy == SortByName || sortBy == SortByType) && orderBy == OrderByDesc) ||\r
- ((sortBy == SortByDate || sortBy == SortBySize) && orderBy == OrderByAsc))\r
- {\r
- flags |= QDir::Reversed;\r
- }\r
+// // デフォルトだと文字列は昇順で、数値は降順…orz\r
+// int orderBy = settings.value(view->side() + slash + IniKey_OrderBy).toInt();\r
+// if (((sortBy == SortByName || sortBy == SortByType) && orderBy == OrderByDesc) ||\r
+// ((sortBy == SortByDate || sortBy == SortBySize) && orderBy == OrderByAsc))\r
+// {\r
+// flags |= QDir::Reversed;\r
+// }\r
\r
- switch (settings.value(view->side() + slash + IniKey_PutDirs).toInt()) {\r
- case PutDirsFirst: flags |= QDir::DirsFirst; break;\r
- case PutDirsLast: flags |= QDir::DirsLast; break;\r
- }\r
+// switch (settings.value(view->side() + slash + IniKey_PutDirs).toInt()) {\r
+// case PutDirsFirst: flags |= QDir::DirsFirst; break;\r
+// case PutDirsLast: flags |= QDir::DirsLast; break;\r
+// }\r
\r
- if (settings.value(view->side() + slash + IniKey_IgnoreCase).toBool()) {\r
- flags |= QDir::IgnoreCase;\r
- }\r
+// if (settings.value(view->side() + slash + IniKey_IgnoreCase).toBool()) {\r
+// flags |= QDir::IgnoreCase;\r
+// }\r
\r
- view->setSorting(flags);\r
-}\r
+// view->setSorting(flags);\r
+//}\r
\r
-void MainWindow::showNameFilters(FolderView *view)\r
-{\r
- filterLabel(view)->setText(tr("フィルタ:") + view->nameFilters().join(" "));\r
-}\r
+//void MainWindow::showNameFilters(FolderView *view)\r
+//{\r
+// QLabel *label = view->parent()->findChild<QLabel*>("filterLabel");\r
+// Q_CHECK_PTR(label);\r
+\r
+// label->setText(tr("フィルタ:") + view->nameFilters().join(" "));\r
+//}\r
\r
void MainWindow::searchItem(const QString &text)\r
{\r
qDebug() << "MainWindow::searchItem" << text;\r
\r
- FolderView *v;\r
- SearchBox *box;\r
- if (ui->pane1->folderPanel()->serachBox()->hasFocus()) {\r
- v = ui->pane1->folderPanel()->folderView();\r
- box = ui->pane1->folderPanel()->serachBox();\r
- }\r
- else {\r
- Q_ASSERT(ui->pane2->folderPanel()->serachBox()->hasFocus());\r
- v = ui->pane2->folderPanel()->folderView();\r
- box = ui->pane2->folderPanel()->serachBox();\r
- }\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ SearchBox *box = view->parent()->findChild<SearchBox*>("searchBox");\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
- return;\r
}\r
-\r
- v->searchItem(box->text());\r
+ else {\r
+ view->searchItem(box->text());\r
+ }\r
}\r
\r
void MainWindow::searchNext()\r
{\r
qDebug() << "MainWindow::searchNext";\r
\r
- FolderView *v = folderView();\r
- SearchBox *box = searchBox(v);\r
- v->searchNext(box->text());\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ SearchBox *box = view->parent()->findChild<SearchBox*>("searchBox");\r
+ Q_CHECK_PTR(box);\r
+\r
+ view->searchNext(box->text());\r
}\r
\r
void MainWindow::searchPrev()\r
{\r
qDebug() << "MainWindow::searchPrev";\r
\r
- FolderView *v = folderView();\r
- SearchBox *box = searchBox(v);\r
- v->searchPrev(box->text());\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ SearchBox *box = view->parent()->findChild<SearchBox*>("searchBox");\r
+ Q_CHECK_PTR(box);\r
+\r
+ view->searchPrev(box->text());\r
}\r
\r
void MainWindow::setCursorToBegin()\r
\r
QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::Key_Home, Qt::ControlModifier);\r
QApplication::sendEvent(QApplication::focusWidget(), &event);\r
-// if (ui->textView->hasFocus()) {\r
-// QTextCursor cursor = ui->textView->textCursor();\r
-// cursor.movePosition(QTextCursor::Start);\r
-// ui->textView->setTextCursor(cursor);\r
-// }\r
-// else {\r
-// FolderView *v = folderView();\r
-// int row = 0;\r
-// v->setCurrentIndex(v->model()->index(row, 0));\r
-// }\r
}\r
\r
void MainWindow::cursorDown()\r
{\r
qDebug() << "MainWindow::cursorDown();";\r
\r
- QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::DownArrow, Qt::NoModifier);\r
+ QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier);\r
QApplication::sendEvent(QApplication::focusWidget(), &event);\r
-\r
-// if (ui->textView->hasFocus()) {\r
-// QTextCursor cursor = ui->textView->textCursor();\r
-// cursor.movePosition(QTextCursor::Down);\r
-// ui->textView->setTextCursor(cursor);\r
-// }\r
-// else {\r
-// FolderView *v = folderView();\r
-// int row = v->currentIndex().row() + 1;\r
-// if (row < v->model()->rowCount()) {\r
-// v->setCurrentIndex(v->model()->index(row, 0));\r
-// }\r
-// }\r
}\r
\r
void MainWindow::cursorUp()\r
\r
QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier);\r
QApplication::sendEvent(QApplication::focusWidget(), &event);\r
-\r
-// if (ui->textView->hasFocus()) {\r
-// QTextCursor cursor = ui->textView->textCursor();\r
-// cursor.movePosition(QTextCursor::Up);\r
-// ui->textView->setTextCursor(cursor);\r
-// }\r
-// else {\r
-// FolderView *v = folderView();\r
-// int row = v->currentIndex().row() - 1;\r
-// if (row >= 0) {\r
-// v->setCurrentIndex(v->model()->index(row, 0));\r
-// }\r
-// }\r
}\r
\r
void MainWindow::setCursorToEnd()\r
\r
QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::Key_End, Qt::ControlModifier);\r
QApplication::sendEvent(QApplication::focusWidget(), &event);\r
-\r
-// if (ui->textView->hasFocus()) {\r
-// QTextCursor cursor = ui->textView->textCursor();\r
-// cursor.movePosition(QTextCursor::End);\r
-// ui->textView->setTextCursor(cursor);\r
-// }\r
-// else {\r
-// FolderView *v = folderView();\r
-// int row = v->model()->rowCount() - 1;\r
-// v->setCurrentIndex(v->model()->index(row, 0));\r
-// }\r
}\r
\r
void MainWindow::setFontSizeDown()\r
void MainWindow::setFontSizeUp()\r
{\r
qDebug() << "MainWindow::setFontSizeUp();";\r
+\r
changeFontSize(1);\r
}\r
\r
{\r
QSettings settings;\r
QFont font;\r
+\r
+ // フォルダビューのフォントサイズ変更\r
if (ui->pane1->folderPanel()->folderView()->hasFocus() ||\r
ui->pane2->folderPanel()->folderView()->hasFocus())\r
{\r
ui->pane1->folderPanel()->folderView()->updateAppearance();\r
ui->pane2->folderPanel()->folderView()->updateAppearance();\r
}\r
- if (ui->pane3->textView()->hasFocus()) {\r
+\r
+ // テキストビューのフォントサイズ変更\r
+ if (ui->pane1->textView()->hasFocus() ||\r
+ ui->pane2->textView()->hasFocus() ||\r
+ ui->pane3->textView()->hasFocus())\r
+ {\r
font = settings.value(IniKey_ViewerFont).value<QFont>();\r
font.setPointSize(font.pointSize() + diff);\r
settings.setValue(IniKey_ViewerFont, font);\r
\r
+ ui->pane1->textView()->updateAppearance();\r
+ ui->pane2->textView()->updateAppearance();\r
ui->pane3->textView()->updateAppearance();\r
}\r
}\r
{\r
qDebug() << "MainWindow::setPathFromOther();";\r
\r
- FolderView *view = folderView();\r
- FolderView *other = otherSideView(view);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ FolderView *other = otherSideFolderView(view);\r
\r
view->setPath(other->dir(), true);\r
- updateActions();\r
}\r
\r
void MainWindow::setPathToHome()\r
{\r
qDebug() << "MainWindow::setPathToHome();";\r
\r
- folderView()->setPath(QDir::homePath(), true);\r
- updateActions();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->setPath(QDir::homePath(), true);\r
}\r
\r
void MainWindow::setPathToOther()\r
{\r
qDebug() << "MainWindow::setPathToOther();";\r
\r
- FolderView *view = folderView();\r
- FolderView *other = otherSideView(view);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ FolderView *other = otherSideFolderView(view);\r
\r
other->setPath(view->dir(), true);\r
- updateActions();\r
}\r
\r
void MainWindow::setPathToParent()\r
{\r
qDebug() << "MainWindow::setPathToParent();";\r
\r
- QDir dir(folderView()->dir());\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ QDir dir(view->dir());\r
if (!dir.isRoot()) {\r
dir.cdUp();\r
- folderView()->setPath(dir.absolutePath(), true);\r
- updateActions();\r
+ view->setPath(dir.absolutePath(), true);\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::setPathToRoot();";\r
\r
- folderView()->setPath(QDir::rootPath(), true);\r
- updateActions();\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ view->setPath(QDir::rootPath(), true);\r
}\r
\r
void MainWindow::toggleSearchBox(bool checked)\r
{\r
qDebug() << "MainWindow::toggleSearchBox" << checked;\r
\r
- FolderView *v;\r
+ FolderView *view;\r
SearchBox *box;\r
\r
if (checked) {\r
- v = folderView();\r
- if (v == ui->pane1->folderPanel()->folderView()) {\r
- box = ui->pane1->folderPanel()->serachBox();\r
- }\r
- else {\r
- Q_ASSERT(v == ui->pane2->folderPanel()->folderView());\r
- box = ui->pane2->folderPanel()->serachBox();\r
- }\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
+ Q_CHECK_PTR(box);\r
\r
box->setVisible(true);\r
box->setFocus();\r
box->selectAll();\r
}\r
else {\r
- if (ui->pane1->folderPanel()->serachBox()->isVisible()) {\r
- box = ui->pane1->folderPanel()->serachBox();\r
- v = ui->pane1->folderPanel()->folderView();\r
+ setViewMode(m_viewMode ^ ModeSearch);\r
+ if (ui->pane1->folderPanel()->searchBox()->isVisible()) {\r
+ box = ui->pane1->folderPanel()->searchBox();\r
+ view = ui->pane1->folderPanel()->folderView();\r
}\r
else {\r
- Q_ASSERT(ui->pane2->folderPanel()->serachBox()->isVisible());\r
- box = ui->pane2->folderPanel()->serachBox();\r
- v = ui->pane2->folderPanel()->folderView();\r
+ Q_ASSERT(ui->pane2->folderPanel()->searchBox()->isVisible());\r
+ box = ui->pane2->folderPanel()->searchBox();\r
+ view = ui->pane2->folderPanel()->folderView();\r
}\r
\r
if (box->hasFocus()) {\r
- v->setFocus();\r
+ view->setFocus();\r
}\r
box->setVisible(false);\r
}\r
}\r
\r
-void MainWindow::openRequest(const QFileInfo &info)\r
-{\r
- m_focusedView = QApplication::focusWidget();\r
+//void MainWindow::openRequest(const QFileInfo &info)\r
+//{\r
+// m_focusedView = QApplication::focusWidget();\r
\r
- QFile file(info.absoluteFilePath());\r
- if (file.open(QIODevice::ReadOnly)) {\r
- ui->splitter->setVisible(false);\r
+// QFile file(info.absoluteFilePath());\r
+// if (file.open(QIODevice::ReadOnly)) {\r
+// ui->splitter->setVisible(false);\r
// ui->textView->setVisible(true);\r
// ui->textView->setFocus();\r
// ui->textView->setSource(file.readAll());\r
- file.close();\r
- }\r
- else {\r
- QMessageBox::critical(\r
- this, tr("エラー"),\r
- tr("ファイルの読み込みに失敗しました。"));\r
- }\r
-}\r
+// file.close();\r
+// }\r
+// else {\r
+// QMessageBox::critical(\r
+// this, tr("エラー"),\r
+// tr("ファイルの読み込みに失敗しました。"));\r
+// }\r
+//}\r
\r
void MainWindow::showPreferenceDialog()\r
{\r
qDebug() << "MainWindow::showContextMenu();";\r
\r
FolderView *view = static_cast<FolderView*>(sender());\r
+ Q_CHECK_PTR(view);\r
+\r
QModelIndex index = view->indexAt(event->pos());\r
\r
QMenu menu(this);\r
}\r
\r
menu.exec(event->globalPos());\r
-\r
}\r
\r
void MainWindow::checkUpdate(bool silent)\r
}\r
}\r
\r
-void MainWindow::viewFinish(QWidget *sender)\r
+void MainWindow::viewFinish()\r
{\r
- qDebug() << "MainWindow::viewFinish();" << sender->objectName();\r
+ qDebug() << "MainWindow::viewFinish();" << sender()->objectName();\r
\r
-// sender->setVisible(false);\r
+ ui->statusBar->findChild<QLabel*>("Right")->setText("");\r
ui->pane3->setVisible(false);\r
ui->splitter->setVisible(true);\r
m_focusedView->setFocus();\r
}\r
\r
-\r
void MainWindow::initActionConnections()\r
{\r
qDebug() << "MainWindow::initActionConnections";\r
connect(ui->view_ToOther, SIGNAL(triggered()), this, SLOT(setPathToOther()));\r
}\r
\r
-FolderView *MainWindow::folderView() const\r
-{\r
- qDebug() << "MainWindow::folderView";\r
-\r
- QWidget *w = qApp->focusWidget();\r
- if (w == ui->pane1->folderPanel()->folderView() ||\r
- w == ui->pane1->folderPanel()->serachBox() ||\r
- w == ui->pane1->folderPanel()->locationBox())\r
- {\r
- return ui->pane1->folderPanel()->folderView();\r
- }\r
-\r
- if (w == ui->pane2->folderPanel()->folderView() ||\r
- w == ui->pane2->folderPanel()->serachBox() ||\r
- w == ui->pane2->folderPanel()->locationBox())\r
- {\r
- return ui->pane2->folderPanel()->folderView();\r
- }\r
-\r
- qDebug() << w->objectName();\r
- return NULL;\r
-}\r
-\r
void MainWindow::replaceVars(QString &str, const QFileInfo info)\r
{\r
qDebug() << "MainWindow::replaceVars" << str;\r
str.replace("$P", info.absoluteFilePath());\r
}\r
\r
-SearchBox *MainWindow::searchBox(FolderView *view) const\r
+FolderView* MainWindow::otherSideFolderView(const FolderView *view) const\r
{\r
- qDebug() << "MainWindow::searchBox()" << view->objectName();\r
+ qDebug() << "MainWindow::otherSideFolderView()";\r
\r
if (view == ui->pane1->folderPanel()->folderView()) {\r
- return ui->pane1->folderPanel()->serachBox();\r
+ return ui->pane2->folderPanel()->folderView();\r
}\r
else {\r
- Q_ASSERT(view == ui->pane1->folderPanel()->folderView());\r
- return ui->pane2->folderPanel()->serachBox();\r
+ Q_ASSERT(view == ui->pane2->folderPanel()->folderView());\r
+ return ui->pane1->folderPanel()->folderView();\r
}\r
}\r
\r
+void MainWindow::setViewMode(ModeFlags flags)\r
+{\r
+ qDebug() << "MainWindow::setViewMode();" << flags;\r
+ m_viewMode = flags;\r
+}\r
+\r
bool MainWindow::startProcess(const QString &cmd, const QString &workDir, const QString &errMsg)\r
{\r
qDebug() << "MainWindow::startProcess" << cmd << workDir << errMsg;\r
\r
void MainWindow::updateActions()\r
{\r
- qDebug() << "MainWindow::updateActions";\r
+ qDebug() << "MainWindow::updateActions" << m_viewMode;\r
+\r
+ QWidget *w = qApp->focusWidget();\r
+ FolderView *view;\r
+ if ((view = qobject_cast<FolderView*>(w))) {\r
+ setEnabledAllActions(true);\r
+ ui->action_SearchNext->setEnabled(false);\r
+ ui->action_SearchPrev->setEnabled(false);\r
\r
- QWidget *w = QApplication::focusWidget();\r
- if (qobject_cast<SimpleTextView*>(w) != NULL ||\r
- ui->pane1->textView()->isVisible() ||\r
- ui->pane2->textView()->isVisible())\r
+ // 「開く」アクションを変更する\r
+ QFileInfo info(view->currentItem());\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
+\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
+ if (m_viewMode & ModeBasic) {\r
+ qDebug() << ">>>>> 通常モードのメニュー設定 <<<<<";\r
+ ui->action_SearchNext->setEnabled(false);\r
+ ui->action_SearchPrev->setEnabled(false);\r
+\r
+ ui->move_Back->setEnabled(!view->history()->isBegin());\r
+ ui->move_Forward->setEnabled(!view->history()->isEnd());\r
+\r
+ QSettings settings;\r
+ ui->action_OpenEditor->setEnabled(!settings.value(IniKey_EditorPath).toString().isEmpty());\r
+ ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_TerminalPath).toString().isEmpty());\r
+\r
+ }\r
+ else if (!otherSideFolderView(view)->isVisible()) {\r
+ qDebug() << ">>>>> ハーフモードのメニュー設定 <<<<<";\r
+ ui->view_FromOther->setEnabled(false);\r
+ ui->view_ToOther->setEnabled(false);\r
+ ui->cmd_Copy->setEnabled(false);\r
+ ui->cmd_Move->setEnabled(false);\r
+ }\r
+ }\r
+ else if (qobject_cast<SearchBox*>(w)) {\r
+ qDebug() << ">>>>> 検索モードのメニュー設定 <<<<<";\r
+ setEnabledAllActions(false);\r
+ ui->action_Search->setEnabled(true);\r
+ ui->action_SearchNext->setEnabled(true);\r
+ ui->action_SearchPrev->setEnabled(true);\r
+ ui->help_About->setEnabled(true);\r
+ }\r
+ else if (qobject_cast<SimpleImageView*>(w) ||\r
+ qobject_cast<SimpleTextView*>(w))\r
{\r
- // テキストビューア時\r
+ qDebug() << ">>>>> ビューアモードのメニュー設定 <<<<<";\r
setEnabledAllActions(false);\r
ui->action_Quit->setEnabled(true);\r
ui->action_Setting->setEnabled(true);\r
ui->help_About->setEnabled(true);\r
ui->key_Left->setEnabled(true);\r
ui->key_Right->setEnabled(true);\r
- // 片面ビューアモード時\r
- if (ui->pane1->textView()->isVisible() ||\r
- ui->pane2->textView()->isVisible())\r
- {\r
+ if (m_viewMode & ModeHalfView) {\r
ui->view_HalfMode->setEnabled(true);\r
}\r
}\r
- else if (qobject_cast<SearchBox*>(w) != NULL) {\r
- // ファイル検索時\r
- setEnabledAllActions(false);\r
- ui->action_Search->setEnabled(true);\r
- ui->action_SearchNext->setEnabled(true);\r
- ui->action_SearchPrev->setEnabled(true);\r
- ui->help_About->setEnabled(true);\r
- }\r
- else if (qobject_cast<FolderView*>(w) != NULL) {\r
- // 通常時\r
- setEnabledAllActions(true);\r
- ui->action_SearchNext->setEnabled(false);\r
- ui->action_SearchPrev->setEnabled(false);\r
-\r
- ui->move_Back->setEnabled(!folderView()->history()->isBegin());\r
- ui->move_Forward->setEnabled(!folderView()->history()->isEnd());\r
-\r
- QSettings settings;\r
- ui->action_OpenEditor->setEnabled(!settings.value(IniKey_EditorPath).toString().isEmpty());\r
- ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_TerminalPath).toString().isEmpty());\r
- }\r
- else if (w){\r
- qDebug() << w->objectName() << "has focus.";\r
- }\r
}\r
\r
void MainWindow::setEnabledAllActions(bool enable)\r
}\r
}\r
\r
-void MainWindow::setNameFilters(FolderView *view, const QString &filters)\r
-{\r
- qDebug() << "MainWindow::setNameFilters();" << view->objectName() << filters;\r
-\r
- QStringList list = filters.split(" ", QString::SkipEmptyParts);\r
- if (list.isEmpty()) {\r
- list << "*";\r
- }\r
- view->setNameFilters(list);\r
- showNameFilters(view);\r
-}\r
-\r
-QLabel *MainWindow::filterLabel(const FolderView *view) const\r
-{\r
- qDebug() << "MainWindow::filterLabel()" << view->objectName();\r
- if (view == ui->pane1->folderPanel()->folderView()) {\r
- return ui->pane1->folderPanel()->filterLabel();\r
- }\r
- else {\r
- Q_ASSERT(view == ui->pane2->folderPanel()->folderView());\r
- return ui->pane2->folderPanel()->filterLabel();\r
- }\r
-}\r
-\r
void MainWindow::about()\r
{\r
+ qDebug() << ">>>>> about <<<<<";\r
+\r
QMessageBox::about(\r
this,\r
tr("げふぅ について"),\r
\r
void MainWindow::closeEvent(QCloseEvent *event)\r
{\r
+ qDebug() << "MainWindow::closeEvent();";\r
+ qDebug() << ">>>>> アプリケーションの終了要求 <<<<<";\r
QSettings settings;\r
\r
if (settings.value(IniKey_ConfirmExit).toBool()) {\r
msgBox.setIcon(QMessageBox::Question);\r
\r
if (msgBox.exec() == QMessageBox::No) {\r
+ qDebug() << ">>>>> ユーザによりキャンセルされました <<<<<";\r
event->ignore();\r
return;\r
}\r
void MainWindow::keyPressEvent(QKeyEvent *event)\r
{\r
QString ksq = KeyEventToSequence(event);\r
- qDebug() << ksq << " @MainWindow";\r
+\r
+ qDebug() << ">>>>> キーイベントを受信" << ksq << "<<<<<";\r
+\r
+ if (ProcessShortcut(ksq, this)) {\r
+ event->accept();\r
+ return;\r
+ }\r
\r
QMainWindow::keyPressEvent(event);\r
}\r