searchbox.cpp \
folderview.cpp \
locationbox.cpp \
- simpleimageview.cpp
+ simpleimageview.cpp \
+ anyview.cpp \
+ folderpanel.cpp
HEADERS += mainwindow.h \
renamesingledialog.h \
folderview.h \
locationbox.h \
version.h \
- simpleimageview.h
+ simpleimageview.h \
+ anyview.h \
+ folderpanel.h
FORMS += mainwindow.ui \
renamesingledialog.ui \
overwritedialog.ui \
sortdialog.ui \
historydialog.ui \
- preferencedialog.ui
+ preferencedialog.ui \
+ anyview.ui \
+ folderpanel.ui
RESOURCES += \
resource.qrc
OTHER_FILES += \
Gefu.rc \
README.md \
- ReadMe.txt
+ ReadMe.txt \
+ keybind.txt
macx {
ICON = ./images/Gefu.icns
* 簡易FTPクライアント
* SNS連携(タイムライン表示とか) ← ファイラーの機能か?
+#### 2014/08/27 Ver0.14
+ * テキストビューアで、左右矢印キーをPageUp/Downに割り当てた。
+ * 「片面ビューアモード」を追加した。
+ * 隣のペインがビューアモードになり、カーソル位置のアイテム内容を表示する。
+
#### 2014/08/26 Ver0.13 公開
* 拡張子・サイズ・更新日時の列幅をフォントサイズに応じて調整するようにした。
* 「最新バージョンをチェック」を「アップデートの確認」に文言変更。
* テキストビューアについても、メニューまたはキーボードで文字の大きさを変更できるようにした。
* テキストビューアについても、カーソル移動系アクションを有効にした。
* 不具合修正
- * 環境設定ダイアログで、「起動時のアップデート確認」の設定表示・変更ができていなかった。
+ * 環境設定ダイアログで、「起動時のアップデート確認」の設定表示・変更ができていなかったのを修正。
+ * アイテム移動時の確認・完了表示に関するオプションが無視されていたのを修正。
#### 2014/08/26 Ver0.12 公開
* コンテキストメニューを実装。
===============================================================================
Gefu(げふぅ) - Gefu is an Experimental File Utility -
- Version 0.13
+ Version 0.14
===============================================================================
- 2014/08/26 @miyabi_satoh
+ 2014/08/27 @miyabi_satoh
◇ 概要 ◇
Twitter: https://twitter.com/miyabi_satoh
◇ 履歴 ◇
+#### 2014/08/27 Ver0.14
+ * 外部アプリを優先する拡張子のデフォルトに「dmg」を追加。
+ * テキストビューアで、左右矢印キーをPageUp/Downに割り当てた。
+ * 「片面ビューアモード」を追加した。
+ * 隣のペインがビューアモードになり、カーソル位置のアイテム内容を表示する。
+
#### 2014/08/26 Ver0.13
* 拡張子・サイズ・更新日時の列幅をフォントサイズに応じて調整するようにした。
* 「最新バージョンをチェック」を「アップデートの確認」に文言変更。
--- /dev/null
+#include "common.h"
+#include "folderview.h"
+#include "anyview.h"
+#include "ui_anyview.h"
+
+#include <QDebug>
+#include <QSettings>
+
+AnyView::AnyView(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::AnyView)
+{
+ ui->setupUi(this);
+
+ // 初期状態では全て非表示
+ ui->folderPanel->setVisible(false);
+ ui->graphicsView->setVisible(false);
+ ui->textView->setVisible(false);
+}
+
+AnyView::~AnyView()
+{
+ delete ui;
+}
+
+void AnyView::changeView(int viewType)
+{
+ qDebug() << "AnyView::changeView();" << viewType;
+
+ // 一度すべてを非表示にする
+ ui->folderPanel->setVisible(false);
+ ui->graphicsView->setVisible(false);
+ ui->textView->setVisible(false);
+
+ QWidget *w;
+ switch (viewType) {
+ case AnyView::ViewFolder: w = ui->folderPanel; break;
+ case AnyView::ViewImage: w = ui->graphicsView; break;
+ case AnyView::ViewText: w = ui->textView; break;
+ default: Q_ASSERT(false); w = NULL; break;
+ }
+
+ this->setVisible(true);
+ w->setVisible(true);
+}
+
+void AnyView::setViewItem(const QFileInfo &info)
+{
+ setUpdatesEnabled(false);
+
+ if (info.isDir()) {
+ changeView(ViewFolder);
+ ui->folderPanel->folderView()->setPath(info.absoluteFilePath(), true);
+ }
+ else {
+ QSettings settings;
+ bool isBinary = false;
+ if (!settings.value(IniKey_ViewerForceOpen).toBool()) {
+ QStringList list = settings.value(IniKey_ViewerIgnoreExt).toString().split(",");
+ foreach (const QString &ext, list) {
+ if (ext.toLower() == info.suffix().toLower()) {
+ isBinary = true;
+ break;
+ }
+ }
+ }
+
+ // TODO:画像ビューアで表示できるか?
+
+ if (!isBinary) {
+ changeView(ViewText);
+ QFile file(info.absoluteFilePath());
+ if (file.open(QIODevice::ReadOnly)) {
+ ui->textView->setSource(file.readAll());
+ file.close();
+ }
+ }
+ else {
+ changeView(ViewText);
+ ui->textView->setSource("");
+ }
+
+ }
+
+ setUpdatesEnabled(true);
+}
+
+FolderPanel *AnyView::folderPanel() const
+{
+ return ui->folderPanel;
+}
+
+SimpleImageView *AnyView::imageView() const
+{
+ return ui->graphicsView;
+}
+
+SimpleTextView *AnyView::textView() const
+{
+ return ui->textView;
+}
+
+
+void AnyView::focusInEvent(QFocusEvent *)
+{
+ qDebug() << "AnyView::focusInEvent();";
+
+ if (ui->folderPanel->isVisible()) {
+ ui->folderPanel->folderView()->setFocus();
+ }
+ else if (ui->graphicsView->isVisible()) {
+ ui->graphicsView->setFocus();
+ }
+ else {
+ Q_ASSERT(ui->textView->isVisible());
+ ui->textView->setFocus();
+ }
+}
--- /dev/null
+#ifndef ANYVIEW_H
+#define ANYVIEW_H
+
+#include <QFileInfo>
+#include <QWidget>
+class FolderPanel;
+class SimpleTextView;
+class SimpleImageView;
+
+namespace Ui {
+class AnyView;
+}
+
+class AnyView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ enum {
+ ViewFolder = 1,
+ ViewText = 2,
+ ViewImage = 3,
+ };
+
+ explicit AnyView(QWidget *parent = 0);
+ ~AnyView();
+
+ // action
+ void changeView(int viewType);
+ void setViewItem(const QFileInfo &info);
+
+ // getter
+ FolderPanel* folderPanel() const;
+ SimpleImageView* imageView() const;
+ SimpleTextView* textView() const;
+
+private:
+ Ui::AnyView *ui;
+
+ // QWidget interface
+protected:
+ void focusInEvent(QFocusEvent *);
+};
+
+#endif // ANYVIEW_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AnyView</class>
+ <widget class="QWidget" name="AnyView">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="SimpleTextView" name="textView">
+ <property name="acceptDrops">
+ <bool>false</bool>
+ </property>
+ <property name="tabChangesFocus">
+ <bool>true</bool>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="plainText">
+ <string>Simple Text View</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="FolderPanel" name="folderPanel" native="true">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="SimpleImageView" name="graphicsView"/>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>SimpleTextView</class>
+ <extends>QPlainTextEdit</extends>
+ <header>simpletextview.h</header>
+ </customwidget>
+ <customwidget>
+ <class>SimpleImageView</class>
+ <extends>QGraphicsView</extends>
+ <header>simpleimageview.h</header>
+ </customwidget>
+ <customwidget>
+ <class>FolderPanel</class>
+ <extends>QWidget</extends>
+ <header>folderpanel.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
#include <QMap>\r
typedef QMap<QString, QString> StringMap;\r
\r
-class MainWindow;\r
+class QObject;\r
class QKeyEvent;\r
+class MainWindow;\r
extern MainWindow* getMainWnd();\r
extern QString FilesizeToString(quint64 size);\r
extern QString ViewerIgnoreExt();\r
extern QString KeyEventToSequence(const QKeyEvent *event);\r
+extern bool ProcessShortcut(const QString &ksq, const QObject *object);\r
\r
#define slash QString("/")\r
#define QQ(x) ("\"" + QString(x) + "\"")\r
--- /dev/null
+#include "folderpanel.h"
+#include "ui_folderpanel.h"
+
+FolderPanel::FolderPanel(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::FolderPanel)
+{
+ ui->setupUi(this);
+ // 初期状態では検索ボックスは非表示
+ ui->searchBox->setVisible(false);
+}
+
+FolderPanel::~FolderPanel()
+{
+ delete ui;
+}
+
+LocationBox *FolderPanel::locationBox() const
+{
+ return ui->locationBox;
+}
+
+FolderView *FolderPanel::folderView() const
+{
+ return ui->folderView;
+}
+
+SearchBox *FolderPanel::serachBox() const
+{
+ return ui->searchBox;
+}
+
+QLabel *FolderPanel::filterLabel() const
+{
+ return ui->filterLabel;
+}
+
+
+void FolderPanel::focusInEvent(QFocusEvent *)
+{
+ ui->folderView->setFocus();
+}
--- /dev/null
+#ifndef FOLDERPANEL_H
+#define FOLDERPANEL_H
+
+#include <QWidget>
+class QLabel;
+class LocationBox;
+class FolderView;
+class SearchBox;
+
+namespace Ui {
+class FolderPanel;
+}
+
+class FolderPanel : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit FolderPanel(QWidget *parent = 0);
+ ~FolderPanel();
+
+ // getter
+ LocationBox* locationBox() const;
+ FolderView* folderView() const;
+ SearchBox* serachBox() const;
+ QLabel* filterLabel() const;
+
+private:
+ Ui::FolderPanel *ui;
+
+ // QWidget interface
+protected:
+ void focusInEvent(QFocusEvent *);
+};
+
+#endif // FOLDERPANEL_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FolderPanel</class>
+ <widget class="QWidget" name="FolderPanel">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="LocationBox" name="locationBox">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="FolderView" name="folderView">
+ <property name="verticalScrollBarPolicy">
+ <enum>Qt::ScrollBarAlwaysOn</enum>
+ </property>
+ <property name="horizontalScrollBarPolicy">
+ <enum>Qt::ScrollBarAlwaysOff</enum>
+ </property>
+ <property name="tabKeyNavigation">
+ <bool>false</bool>
+ </property>
+ <property name="dragEnabled">
+ <bool>true</bool>
+ </property>
+ <property name="dragDropMode">
+ <enum>QAbstractItemView::DragDrop</enum>
+ </property>
+ <property name="defaultDropAction">
+ <enum>Qt::CopyAction</enum>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::SingleSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="textElideMode">
+ <enum>Qt::ElideMiddle</enum>
+ </property>
+ <property name="showGrid">
+ <bool>false</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ <attribute name="horizontalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ </widget>
+ </item>
+ <item>
+ <widget class="SearchBox" name="searchBox">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="filterLabel">
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>SearchBox</class>
+ <extends>QLineEdit</extends>
+ <header>searchbox.h</header>
+ </customwidget>
+ <customwidget>
+ <class>FolderView</class>
+ <extends>QTableView</extends>
+ <header>folderview.h</header>
+ </customwidget>
+ <customwidget>
+ <class>LocationBox</class>
+ <extends>QLineEdit</extends>
+ <header>locationbox.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
#include "common.h"
+#include "mainwindow.h"
#include "folderview.h"
#include <QDebug>
{
qDebug() << side() << "keyPressEvent";
- emit keyPressed(event);
-
- if (!event->isAccepted()) {
- QTableView::keyPressEvent(event);
- }
- else {
- qDebug() << "KeyEvent accepted.";
+// emit keyPressed(event);
+
+// if (!event->isAccepted()) {
+// QTableView::keyPressEvent(event);
+// }
+// else {
+// qDebug() << "KeyEvent accepted.";
+// }
+ QString ksq = KeyEventToSequence(event);
+ if (ProcessShortcut(ksq, getMainWnd())) {
+ event->accept();
+ return;
}
+
+ QTableView::keyPressEvent(event);
}
void FolderView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles)
void retrieveStarted(const QString &path);
void retrieveFinished();
void requestContextMenu(QContextMenuEvent *event);
- void keyPressed(QKeyEvent *event);
+// void keyPressed(QKeyEvent *event);
public slots:
--- /dev/null
+== キーバインド一覧
+= フォルダビュー
+||キー ||装飾なし ||Shift ||Alt ||Ctrl(Command) ||覚え方 ||
+||A ||すべてのファイルをマーク ||すべてマーク || || ||All ||
+||C ||ファイル名をクリップボードにコピー ||フルパスをクリップボードにコピー || ||隣のペインにアイテムをコピー ||Copy ||
+||D || || || ||選択アイテムを削除 ||Delete ||
+||E ||外部エディタで開く || || ||ファイルを作成 ||Edit, newの「E」 ||
+||G ||カーソルを先頭に移動 ||カーソルを末尾に移動 || || ||Go ||
+||H ||ホームフォルダに移動 ||隠しファイルを表示/非表示 || || ||Home, Hide ||
+||I ||マークを反転 || || || ||Invert ||
+||J ||カーソルを下に移動 ||フォルダを選択して移動 || || ||viのキーバインド, Jump ||
+||K ||カーソルを上に移動 || || ||フォルダを作成 ||viのキーバインド, mkdirの「K」 ||
+||L ||最新の情報に更新 || || || ||Load ||
+||M ||開く ||アプリケーションで開く || ||隣のペインにアイテムを移動 ||viのキーバインド, Move ||
+||O ||隣のパネルと同じフォルダを表示 ||隣のパネルに同じフォルダを表示 || || ||Onaji(同じ) ||
+||Q ||終了 || || || ||Quit ||
+||R ||履歴を表示 || || ||名前の変更 ||Rireki, Rename ||
+||S ||ソート方法を選択 ||システムファイルを表示/非表示 || || ||Sort, System ||
+||U ||すべてのマークを解除 || || || ||Unmark ||
+||W ||表示フォルダを交換 || || || ||swapの「W」 ||
+||X ||コマンドを実行 || || || ||executeの「X」 ||
+||Z ||環境設定 ||アップデートを確認 || || || ||
+||TAB ||隣のパネルに移動 || || || || ||
+||SPACE ||マーク/解除 || || || || ||
+||ENTER ||フォルダを開く/内蔵ビューアで開く ||アプリケーションで開く || || || ||
+||BACKSPACE ||親フォルダに移動 ||ルートフォルダに移動 || || || ||
+||[ ||履歴を戻る || || || || ||
+||] ||履歴を進む || || || || ||
+||? ||げふぅ について || || || || ||
+||> ||ターミナルで開く || || || || ||
+||* ||フィルタを設定 || || || ||ワイルドカード(*) ||
+||/ ||ファイル検索開始/終了 || || || || ||
+||+ ||フォントサイズを大きく || || || || ||
+||- ||フォントサイズを小さく || || || || ||
+||↑ ||カーソルを上に移動 ||隣ペインのカーソルを上に移動 ||隣ペインのカーソルを先頭に移動 ||
+||↓ ||カーソルを下に移動 ||隣ペインのカーソルを下に移動 ||隣ペインのカーソルを末尾に移動 ||
+||← ||親フォルダに移動/隣のペインに移動 ||
+||→ ||親フォルダに移動/隣のペインに移動 ||
+= テキストビュー
+||キー ||装飾なし ||Shift ||Alt ||Ctrl(Command) ||覚え方 ||
+||C ||ファイル名をクリップボードにコピー ||フルパスをクリップボードにコピー || ||選択範囲をクリップボードにコピー ||Copy ||
+||E || ||EUC-JPで再読込 || || ||EUC-JP ||
+||G ||カーソルを先頭に移動 ||カーソルを末尾に移動 || || ||Go ||
+||I || ||UTF-16で再読込 || || ||U(UTF-8)の隣のキー ||
+||J ||カーソルを下に移動 ||ISO-2022-JPで再読込 || || ||JIS ||
+||K ||カーソルを上に移動 || || || ||viのキーバインド ||
+||O || ||UTF-16BEで再読込 || || ||I(UTF-16)の隣のキー ||
+||P || ||UTF-16LEで再読込 || || ||O(UTF-16BE)の隣のキー ||
+||Q ||終了 || || || ||Quit ||
+||S || ||Shift-JISで再読込 || || ||SJIS ||
+||U || ||UTF-8で再読込 || || ||UTF-8 ||
+||Z ||環境設定 ||アップデートを確認 || || || ||
+||ENTER ||フォルダビューに戻る || || || || ||
+||BACKSPACE ||フォルダビューに戻る || || || || ||
+||+ ||フォントサイズを大きく || || || || ||
+||- ||フォントサイズを小さく || || || || ||
+||↑ ||カーソルを上に移動 ||隣ペインのカーソルを上に移動 ||隣ペインのカーソルを先頭に移動 ||
+||↓ ||カーソルを下に移動 ||隣ペインのカーソルを下に移動 ||隣ペインのカーソルを末尾に移動 ||
+||← ||PageUp ||
+||→ ||PageDown ||
#include "common.h"\r
#include "mainwindow.h"\r
\r
+#include <QDebug>\r
#include <QApplication>\r
#include <QSettings>\r
#include <QDir>\r
+#include <QAction>\r
+\r
+bool ProcessShortcut(const QString &ksq, const QObject *object)\r
+{\r
+ qDebug() << "ProcessShortcut()";\r
+\r
+ if (ksq.isEmpty()) {\r
+ return false;\r
+ }\r
+\r
+ foreach (QObject *obj, object->children()) {\r
+ QAction *action = qobject_cast<QAction*>(obj);\r
+ if (!action || !action->isEnabled()) {\r
+ continue;\r
+ }\r
+\r
+ foreach (const QKeySequence &k, action->shortcuts()) {\r
+ if (ksq == k.toString()) {\r
+ if (action->isCheckable()) {\r
+ action->setChecked(!action->isChecked());\r
+ }\r
+ else {\r
+ emit action->triggered();\r
+ }\r
+ qDebug() << "emit" << action->objectName();\r
+ return true;\r
+ }\r
+ }\r
+ }\r
+ return false;\r
+}\r
\r
int main(int argc, char *argv[])\r
{\r
list << "o" << "obj" << "ocx" << "a" << "so" << "app";\r
// アーカイブ系\r
list << "lzh" << "zip" << "cab" << "tar" << "rar" << "gz" << "tgz";\r
- list << "bz2" << "xz" << "jar" << "7z";\r
+ list << "bz2" << "xz" << "jar" << "7z" << "dmg";\r
// ドキュメント系\r
list << "pdf" << "doc" << "docx" << "xls" << "xlsx" << "ppt" << "pptx";\r
// フォント\r
#include "renamemultidialog.h"\r
#include "historydialog.h"\r
#include "sortdialog.h"\r
+#include "simpletextview.h"\r
\r
#include <QCheckBox>\r
#include <QCloseEvent>\r
#include <QDesktopServices>\r
#include <QClipboard>\r
#include <QFileDialog>\r
+#include <folderpanel.h>\r
\r
MainWindow* getMainWnd()\r
{\r
\r
initActionConnections();\r
connect(qApp, SIGNAL(focusChanged(QWidget*,QWidget*)), this, SLOT(focusChange(QWidget*,QWidget*)));\r
- connect(ui->textView, SIGNAL(viewFinished(QWidget*)), this, SLOT(viewFinish(QWidget*)));\r
+ connect(ui->pane3->textView(), SIGNAL(viewFinished(QWidget*)), this, SLOT(viewFinish(QWidget*)));\r
\r
// ビューアは初期状態で非表示\r
- ui->textView->setVisible(false);\r
- ui->graphicsView->setVisible(false);\r
+ ui->pane3->setVisible(false);\r
\r
for (int i = 1; i <= 2; i++) {\r
- LocationBox *locationBox = findChild<LocationBox*>(QString("locationBox%1").arg(i));\r
- Q_CHECK_PTR(locationBox);\r
+ AnyView *anyView = findChild<AnyView*>(QString("pane%1").arg(i));\r
+ Q_CHECK_PTR(anyView);\r
\r
- FolderView *folderView = findChild<FolderView*>(QString("folderView%1").arg(i));\r
- Q_CHECK_PTR(folderView);\r
+ FolderPanel *fp = anyView->findChild<FolderPanel*>("folderPanel");\r
+ Q_CHECK_PTR(fp);\r
+ fp->setObjectName(QString("folderPanel%1").arg(i));\r
\r
- SearchBox *searchBox = findChild<SearchBox*>(QString("searchBox%1").arg(i));\r
- Q_CHECK_PTR(searchBox);\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(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(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
checkUpdate(true);\r
}\r
\r
- ui->folderView1->refresh();\r
- ui->folderView2->refresh();\r
+ ui->pane2->changeView(AnyView::ViewFolder);\r
+ ui->pane2->folderPanel()->folderView()->repaint();\r
+\r
+ ui->pane1->changeView(AnyView::ViewFolder);\r
+ ui->pane1->folderPanel()->folderView()->repaint();\r
}\r
\r
MainWindow::~MainWindow()\r
{\r
qDebug() << "MainWindow::otherSideView()" << view->objectName();\r
\r
- if (view == ui->folderView1) {\r
- return ui->folderView2;\r
+ if (view == ui->pane1->folderPanel()->folderView()) {\r
+ return ui->pane2->folderPanel()->folderView();\r
}\r
\r
- Q_ASSERT(view == ui->folderView2);\r
- return ui->folderView1;\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
\r
- if (now == ui->folderView1 || now == ui->folderView2) {\r
+ if (now &&\r
+ (now == ui->pane1->folderPanel()->folderView() ||\r
+ now == ui->pane2->folderPanel()->folderView()))\r
+ {\r
ui->statusBar->showMessage(folderView()->currentItem().absoluteFilePath());\r
}\r
\r
- if (old == ui->searchBox1 || old == ui->searchBox2) {\r
+ if (old &&\r
+ (old == ui->pane1->folderPanel()->serachBox() ||\r
+ old == ui->pane2->folderPanel()->serachBox()))\r
+ {\r
old->setVisible(false);\r
}\r
\r
settings.setValue(IniKey_AutoCloseMove, opDlg.autoClose());\r
\r
// 念のため、リフレッシュ\r
- ui->folderView1->refresh();\r
- ui->folderView2->refresh();\r
+// ui->folderView1->refresh();\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
+//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
+// qDebug() << "MainWindow::keyPress" << ksq;\r
\r
- foreach (QObject *obj, children()) {\r
- QAction *action = qobject_cast<QAction*>(obj);\r
- if (!action) {\r
- continue;\r
- }\r
+// if (ProcessShortcut(ksq, this)) {\r
+// event->accept();\r
+// return;\r
+// }\r
\r
- foreach (const QKeySequence &k, action->shortcuts()) {\r
- if (ksq == k.toString()) {\r
- if (action->isEnabled()) {\r
- if (action->isCheckable()) {\r
- action->setChecked(!action->isChecked());\r
- }\r
- else {\r
- emit action->triggered();\r
- }\r
- qDebug() << "emit" << action->objectName();\r
- }\r
- event->accept();\r
- return;\r
- }\r
- }\r
- }\r
+// event->ignore();\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
- }\r
- event->accept();\r
- return;\r
+void MainWindow::leftKeyPress()\r
+{\r
+ qDebug() << "MainWindow::leftKeyPress();";\r
+\r
+ if (ui->pane3->textView()->hasFocus()) {\r
+ QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::Key_PageUp, Qt::NoModifier);\r
+ QApplication::sendEvent(ui->pane3->textView(), &event);\r
+ }\r
+ else if (ui->pane1->folderPanel()->folderView()->hasFocus()) {\r
+ setPathToParent();\r
}\r
+ else if (ui->pane2->folderPanel()->folderView()->hasFocus()) {\r
+// ui->folderView1->setFocus();\r
+ ui->pane1->setFocus();\r
+ }\r
+}\r
+\r
+void MainWindow::rightKeyPress()\r
+{\r
+ qDebug() << "MainWindow::rightKeyPress();";\r
\r
- event->ignore();\r
+ if (ui->pane3->textView()->hasFocus()) {\r
+ QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::Key_PageDown, Qt::NoModifier);\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
+ }\r
+ else if (ui->pane2->folderPanel()->folderView()->hasFocus()) {\r
+ setPathToParent();\r
+ }\r
}\r
\r
void MainWindow::returnPressInSearchBox()\r
}\r
}\r
\r
+ if (ui->view_HalfMode->isChecked()) {\r
+ FolderView *view = static_cast<FolderView*>(sender());\r
+ if (!view->hasFocus()) {\r
+ return;\r
+ }\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
+ updateActions();\r
+ }\r
}\r
\r
void MainWindow::dataChange()\r
settings.setValue(IniKey_AutoCloseCopy, opDlg.autoClose());\r
\r
// 念のため、リフレッシュ\r
- ui->folderView1->refresh();\r
- ui->folderView2->refresh();\r
+// ui->folderView1->refresh();\r
+// ui->folderView2->refresh();\r
}\r
\r
void MainWindow::copyItems()\r
settings.setValue(IniKey_AutoCloseDelete, opDlg.autoClose());\r
\r
// 念のため、リフレッシュ\r
- ui->folderView1->refresh();\r
- ui->folderView2->refresh();\r
+// ui->folderView1->refresh();\r
+// ui->folderView2->refresh();\r
}\r
\r
void MainWindow::open(const QModelIndex &index)\r
}\r
}\r
\r
- setUpdatesEnabled(false);\r
-\r
foreach (QObject *obj, this->children()) {\r
QAction *action = qobject_cast<QAction*>(obj);\r
if (action) {\r
}\r
\r
m_focusedView = folderView();\r
+ ui->pane3->setViewItem(info);\r
ui->splitter->setVisible(false);\r
- ui->textView->setVisible(true);\r
- ui->textView->setFocus();\r
-\r
- setUpdatesEnabled(true);\r
-\r
- QFile file(info.absoluteFilePath());\r
- if (file.open(QIODevice::ReadOnly)) {\r
- ui->textView->setSource(file.readAll());\r
- }\r
}\r
\r
void MainWindow::openEditor(const QString &path)\r
qDebug() << "MainWindow::retrieveStart();" << path;\r
\r
ui->statusBar->showMessage(tr("ファイルリストを取得しています..."));\r
- if (sender() == ui->folderView1) {\r
- ui->locationBox1->setText(path);\r
+ if (sender() == ui->pane1->folderPanel()->folderView()) {\r
+ ui->pane1->folderPanel()->locationBox()->setText(path);\r
}\r
else {\r
- Q_ASSERT(sender() == ui->folderView2);\r
- ui->locationBox2->setText(path);\r
+ Q_ASSERT(sender() == ui->pane2->folderPanel()->folderView());\r
+ ui->pane2->folderPanel()->locationBox()->setText(path);\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::swapView();";\r
\r
- QString dir1 = ui->folderView1->dir();\r
- QString dir2 = ui->folderView2->dir();\r
+ QString dir1 = ui->pane1->folderPanel()->folderView()->dir();\r
+ QString dir2 = ui->pane2->folderPanel()->folderView()->dir();\r
\r
- ui->folderView1->setPath(dir2, true);\r
- ui->folderView2->setPath(dir1, true);\r
+ ui->pane1->folderPanel()->folderView()->setPath(dir2, true);\r
+ ui->pane2->folderPanel()->folderView()->setPath(dir1, true);\r
\r
updateActions();\r
}\r
\r
+void MainWindow::switchHalfMode(bool checked)\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
+\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
+ }\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
+}\r
+\r
void MainWindow::setSorting(FolderView *view)\r
{\r
qDebug() << "MainWindow::setSorting();" << view->objectName();\r
\r
FolderView *v;\r
SearchBox *box;\r
- if (ui->searchBox1->hasFocus()) {\r
- v = ui->folderView1;\r
- box = ui->searchBox1;\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->searchBox2->hasFocus());\r
- v = ui->folderView2;\r
- box = ui->searchBox2;\r
+ Q_ASSERT(ui->pane2->folderPanel()->serachBox()->hasFocus());\r
+ v = ui->pane2->folderPanel()->folderView();\r
+ box = ui->pane2->folderPanel()->serachBox();\r
}\r
\r
if (text.right(1) == "/") {\r
{\r
qDebug() << "MainWindow::setCursorToBegin();";\r
\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
+ 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
- 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
+ QKeyEvent event = QKeyEvent(QEvent::KeyPress, Qt::DownArrow, 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
qDebug() << "MainWindow::cursorUp();";\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
+ 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
qDebug() << "MainWindow::setCursorToEnd();";\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
+ 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
{\r
QSettings settings;\r
QFont font;\r
- if (ui->folderView1->hasFocus() || ui->folderView2->hasFocus()) {\r
+ if (ui->pane1->folderPanel()->folderView()->hasFocus() ||\r
+ ui->pane2->folderPanel()->folderView()->hasFocus())\r
+ {\r
font = settings.value(IniKey_ViewFont).value<QFont>();\r
font.setPointSize(font.pointSize() + diff);\r
settings.setValue(IniKey_ViewFont, font);\r
\r
- ui->folderView1->updateAppearance();\r
- ui->folderView2->updateAppearance();\r
+ ui->pane1->folderPanel()->folderView()->updateAppearance();\r
+ ui->pane2->folderPanel()->folderView()->updateAppearance();\r
}\r
- if (ui->textView->hasFocus()) {\r
+ if (ui->pane3->textView()->hasFocus()) {\r
font = settings.value(IniKey_ViewerFont).value<QFont>();\r
font.setPointSize(font.pointSize() + diff);\r
settings.setValue(IniKey_ViewerFont, font);\r
\r
- ui->textView->updateAppearance();\r
+ ui->pane3->textView()->updateAppearance();\r
}\r
}\r
\r
\r
if (checked) {\r
v = folderView();\r
- if (v == ui->folderView1) {\r
- box = ui->searchBox1;\r
+ if (v == ui->pane1->folderPanel()->folderView()) {\r
+ box = ui->pane1->folderPanel()->serachBox();\r
}\r
else {\r
- Q_ASSERT(v == ui->folderView2);\r
- box = ui->searchBox2;\r
+ Q_ASSERT(v == ui->pane2->folderPanel()->folderView());\r
+ box = ui->pane2->folderPanel()->serachBox();\r
}\r
\r
box->setVisible(true);\r
box->selectAll();\r
}\r
else {\r
- if (ui->searchBox1->isVisible()) {\r
- box = ui->searchBox1;\r
- v = ui->folderView1;\r
+ if (ui->pane1->folderPanel()->serachBox()->isVisible()) {\r
+ box = ui->pane1->folderPanel()->serachBox();\r
+ v = ui->pane1->folderPanel()->folderView();\r
}\r
else {\r
- Q_ASSERT(ui->searchBox2->isVisible());\r
- box = ui->searchBox2;\r
- v = ui->folderView2;\r
+ Q_ASSERT(ui->pane2->folderPanel()->serachBox()->isVisible());\r
+ box = ui->pane2->folderPanel()->serachBox();\r
+ v = ui->pane2->folderPanel()->folderView();\r
}\r
\r
if (box->hasFocus()) {\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
+// ui->textView->setVisible(true);\r
+// ui->textView->setFocus();\r
+// ui->textView->setSource(file.readAll());\r
+ file.close();\r
}\r
else {\r
QMessageBox::critical(\r
\r
PreferenceDialog dlg(this);\r
if (dlg.exec() == QDialog::Accepted) {\r
- ui->locationBox1->updateAppearance();\r
- ui->locationBox2->updateAppearance();\r
- ui->folderView1->updateAppearance();\r
- ui->folderView2->updateAppearance();\r
- ui->textView->updateAppearance();\r
+ ui->pane1->folderPanel()->locationBox()->updateAppearance();\r
+ ui->pane2->folderPanel()->locationBox()->updateAppearance();\r
+ ui->pane1->folderPanel()->folderView()->updateAppearance();\r
+ ui->pane2->folderPanel()->folderView()->updateAppearance();\r
+ ui->pane1->textView()->updateAppearance();\r
+ ui->pane2->textView()->updateAppearance();\r
+ ui->pane3->textView()->updateAppearance();\r
\r
updateActions();\r
}\r
{\r
qDebug() << "MainWindow::toggleShowHiddenFiles" << checked;\r
\r
- ui->folderView1->setFilter(QDir::Hidden, checked);\r
- ui->folderView1->refresh();\r
+ ui->pane1->folderPanel()->folderView()->setFilter(QDir::Hidden, checked);\r
+ ui->pane1->folderPanel()->folderView()->refresh();\r
\r
- ui->folderView2->setFilter(QDir::Hidden, checked);\r
- ui->folderView2->refresh();\r
+ ui->pane2->folderPanel()->folderView()->setFilter(QDir::Hidden, checked);\r
+ ui->pane2->folderPanel()->folderView()->refresh();\r
}\r
\r
void MainWindow::toggleShowSystemFiles(bool checked)\r
{\r
qDebug() << "MainWindow::toggleShowSystemFiles" << checked;\r
\r
- ui->folderView1->setFilter(QDir::System, checked);\r
- ui->folderView1->refresh();\r
+ ui->pane1->folderPanel()->folderView()->setFilter(QDir::System, checked);\r
+ ui->pane1->folderPanel()->folderView()->refresh();\r
\r
- ui->folderView2->setFilter(QDir::System, checked);\r
- ui->folderView2->refresh();\r
+ ui->pane2->folderPanel()->folderView()->setFilter(QDir::System, checked);\r
+ ui->pane2->folderPanel()->folderView()->refresh();\r
}\r
\r
void MainWindow::showContextMenu(QContextMenuEvent *event)\r
{\r
qDebug() << "MainWindow::viewFinish();" << sender->objectName();\r
\r
- sender->setVisible(false);\r
+// sender->setVisible(false);\r
+ ui->pane3->setVisible(false);\r
ui->splitter->setVisible(true);\r
m_focusedView->setFocus();\r
}\r
{\r
qDebug() << "MainWindow::initActionConnections";\r
\r
+ connect(ui->key_Left, SIGNAL(triggered()), this, SLOT(leftKeyPress()));\r
+ connect(ui->key_Right, SIGNAL(triggered()), this, SLOT(rightKeyPress()));\r
+\r
connect(ui->action_Command, SIGNAL(triggered()), this, SLOT(executeCommand()));\r
connect(ui->action_Exec, SIGNAL(triggered()), this, SLOT(shellExecute()));\r
connect(ui->action_Open, SIGNAL(triggered()), this, SLOT(open()));\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_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
connect(ui->view_Sort, SIGNAL(triggered()), this, SLOT(showSortDialog()));\r
qDebug() << "MainWindow::folderView";\r
\r
QWidget *w = qApp->focusWidget();\r
- if (w == ui->folderView1 || w == ui->searchBox1 || w == ui->locationBox1) {\r
- return ui->folderView1;\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
- if (w == ui->folderView2 || w == ui->searchBox2 || w == ui->locationBox2) {\r
- return ui->folderView2;\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
{\r
qDebug() << "MainWindow::searchBox()" << view->objectName();\r
\r
- if (view == ui->folderView1) {\r
- return ui->searchBox1;\r
+ if (view == ui->pane1->folderPanel()->folderView()) {\r
+ return ui->pane1->folderPanel()->serachBox();\r
}\r
else {\r
- Q_ASSERT(view == ui->folderView2);\r
- return ui->searchBox2;\r
+ Q_ASSERT(view == ui->pane1->folderPanel()->folderView());\r
+ return ui->pane2->folderPanel()->serachBox();\r
}\r
}\r
\r
{\r
qDebug() << "MainWindow::updateActions";\r
\r
- if (ui->textView->hasFocus()) {\r
+ QWidget *w = QApplication::focusWidget();\r
+ if (qobject_cast<SimpleTextView*>(w) != NULL ||\r
+ ui->pane1->textView()->isVisible() ||\r
+ ui->pane2->textView()->isVisible())\r
+ {\r
// テキストビューア時\r
setEnabledAllActions(false);\r
ui->action_Quit->setEnabled(true);\r
ui->move_Down->setEnabled(true);\r
ui->move_End->setEnabled(true);\r
ui->move_Up->setEnabled(true);\r
- ui->copy_Filename->setEnabled(true);\r
- ui->copy_Fullpath->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
+ ui->view_HalfMode->setEnabled(true);\r
+ }\r
}\r
- else if (ui->searchBox1->hasFocus() || ui->searchBox2->hasFocus()) {\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
- ui->action_Quit->setEnabled(true);\r
}\r
- else if (ui->folderView1->hasFocus() || ui->folderView2->hasFocus()) {\r
+ else if (qobject_cast<FolderView*>(w) != NULL) {\r
// 通常時\r
setEnabledAllActions(true);\r
ui->action_SearchNext->setEnabled(false);\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
QLabel *MainWindow::filterLabel(const FolderView *view) const\r
{\r
qDebug() << "MainWindow::filterLabel()" << view->objectName();\r
- if (view == ui->folderView1) {\r
- return ui->filterLabel1;\r
+ if (view == ui->pane1->folderPanel()->folderView()) {\r
+ return ui->pane1->folderPanel()->filterLabel();\r
}\r
else {\r
- Q_ASSERT(view == ui->folderView2);\r
- return ui->filterLabel2;\r
+ Q_ASSERT(view == ui->pane2->folderPanel()->folderView());\r
+ return ui->pane2->folderPanel()->filterLabel();\r
}\r
}\r
\r
settings.setValue(IniKey_ConfirmExit, !checkBox->isChecked());\r
}\r
\r
- settings.setValue(QString("Left/") + IniKey_Dir, ui->folderView1->dir());\r
- settings.setValue(QString("Right/") + IniKey_Dir, ui->folderView2->dir());\r
+ settings.setValue(QString("Left/") + IniKey_Dir, ui->pane1->folderPanel()->folderView()->dir());\r
+ settings.setValue(QString("Right/") + IniKey_Dir, ui->pane2->folderPanel()->folderView()->dir());\r
settings.setValue(IniKey_ShowHidden, ui->view_Hidden->isChecked());\r
settings.setValue(IniKey_ShowSystem, ui->view_System->isChecked());\r
settings.setValue(IniKey_WindowGeometry, saveGeometry());\r
void dataChange();\r
void dropAccept(const QFileInfoList &list);\r
void focusChange(QWidget * old, QWidget * now);\r
- void keyPress(QKeyEvent *event);\r
+// void keyPress(QKeyEvent *event);\r
+ void leftKeyPress();\r
+ void rightKeyPress();\r
void returnPressInSearchBox();\r
\r
void about();\r
void showPreferenceDialog();\r
void showSortDialog();\r
void swapView();\r
+ void switchHalfMode(bool checked);\r
void toggleSearchBox(bool checked);\r
void toggleShowHiddenFiles(bool checked);\r
void toggleShowSystemFiles(bool checked);\r
<x>0</x>\r
<y>0</y>\r
<width>828</width>\r
- <height>531</height>\r
+ <height>365</height>\r
</rect>\r
</property>\r
<property name="windowTitle">\r
<number>0</number>\r
</property>\r
<item>\r
- <widget class="LocationBox" name="locationBox1">\r
- <property name="focusPolicy">\r
- <enum>Qt::ClickFocus</enum>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="FolderView" name="folderView1">\r
- <property name="verticalScrollBarPolicy">\r
- <enum>Qt::ScrollBarAlwaysOn</enum>\r
- </property>\r
- <property name="horizontalScrollBarPolicy">\r
- <enum>Qt::ScrollBarAlwaysOff</enum>\r
- </property>\r
- <property name="tabKeyNavigation">\r
- <bool>false</bool>\r
- </property>\r
- <property name="dragEnabled">\r
- <bool>true</bool>\r
- </property>\r
- <property name="dragDropMode">\r
- <enum>QAbstractItemView::DragDrop</enum>\r
- </property>\r
- <property name="defaultDropAction">\r
- <enum>Qt::CopyAction</enum>\r
- </property>\r
- <property name="alternatingRowColors">\r
- <bool>false</bool>\r
- </property>\r
- <property name="selectionMode">\r
- <enum>QAbstractItemView::SingleSelection</enum>\r
- </property>\r
- <property name="selectionBehavior">\r
- <enum>QAbstractItemView::SelectRows</enum>\r
- </property>\r
- <property name="textElideMode">\r
- <enum>Qt::ElideMiddle</enum>\r
- </property>\r
- <property name="showGrid">\r
- <bool>false</bool>\r
- </property>\r
- <property name="wordWrap">\r
- <bool>false</bool>\r
- </property>\r
- <attribute name="horizontalHeaderHighlightSections">\r
- <bool>false</bool>\r
- </attribute>\r
- <attribute name="verticalHeaderVisible">\r
- <bool>false</bool>\r
- </attribute>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="SearchBox" name="searchBox1">\r
- <property name="focusPolicy">\r
- <enum>Qt::ClickFocus</enum>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QLabel" name="filterLabel1">\r
- <property name="text">\r
- <string>TextLabel</string>\r
+ <widget class="AnyView" name="pane1" native="true">\r
+ <property name="sizePolicy">\r
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">\r
+ <horstretch>0</horstretch>\r
+ <verstretch>0</verstretch>\r
+ </sizepolicy>\r
</property>\r
</widget>\r
</item>\r
</layout>\r
</widget>\r
<widget class="QWidget" name="layoutWidget">\r
- <layout class="QVBoxLayout" name="verticalLayout">\r
+ <layout class="QVBoxLayout" name="verticalLayout_1">\r
<property name="spacing">\r
<number>0</number>\r
</property>\r
<item>\r
- <widget class="LocationBox" name="locationBox2">\r
- <property name="focusPolicy">\r
- <enum>Qt::ClickFocus</enum>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="FolderView" name="folderView2">\r
- <property name="verticalScrollBarPolicy">\r
- <enum>Qt::ScrollBarAlwaysOn</enum>\r
- </property>\r
- <property name="horizontalScrollBarPolicy">\r
- <enum>Qt::ScrollBarAlwaysOff</enum>\r
- </property>\r
- <property name="tabKeyNavigation">\r
- <bool>false</bool>\r
- </property>\r
- <property name="dragEnabled">\r
- <bool>true</bool>\r
- </property>\r
- <property name="dragDropMode">\r
- <enum>QAbstractItemView::DragDrop</enum>\r
- </property>\r
- <property name="defaultDropAction">\r
- <enum>Qt::CopyAction</enum>\r
- </property>\r
- <property name="alternatingRowColors">\r
- <bool>false</bool>\r
- </property>\r
- <property name="selectionMode">\r
- <enum>QAbstractItemView::SingleSelection</enum>\r
- </property>\r
- <property name="selectionBehavior">\r
- <enum>QAbstractItemView::SelectRows</enum>\r
- </property>\r
- <property name="textElideMode">\r
- <enum>Qt::ElideMiddle</enum>\r
- </property>\r
- <property name="showGrid">\r
- <bool>false</bool>\r
- </property>\r
- <property name="wordWrap">\r
- <bool>false</bool>\r
- </property>\r
- <attribute name="horizontalHeaderHighlightSections">\r
- <bool>false</bool>\r
- </attribute>\r
- <attribute name="verticalHeaderVisible">\r
- <bool>false</bool>\r
- </attribute>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="SearchBox" name="searchBox2">\r
- <property name="focusPolicy">\r
- <enum>Qt::ClickFocus</enum>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QLabel" name="filterLabel2">\r
- <property name="text">\r
- <string>TextLabel</string>\r
+ <widget class="AnyView" name="pane2" native="true">\r
+ <property name="sizePolicy">\r
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">\r
+ <horstretch>0</horstretch>\r
+ <verstretch>0</verstretch>\r
+ </sizepolicy>\r
</property>\r
</widget>\r
</item>\r
</widget>\r
</item>\r
<item>\r
- <widget class="SimpleImageView" name="graphicsView"/>\r
- </item>\r
- <item>\r
- <widget class="SimpleTextView" name="textView">\r
- <property name="plainText">\r
- <string>Simple Text</string>\r
+ <widget class="AnyView" name="pane3" native="true">\r
+ <property name="sizePolicy">\r
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">\r
+ <horstretch>0</horstretch>\r
+ <verstretch>0</verstretch>\r
+ </sizepolicy>\r
</property>\r
</widget>\r
</item>\r
- <item>\r
- <layout class="QHBoxLayout" name="horizontalLayout">\r
- <property name="spacing">\r
- <number>0</number>\r
- </property>\r
- <item>\r
- <widget class="QPushButton" name="pushButton_4">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QPushButton" name="pushButton_8">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QPushButton" name="pushButton_7">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QPushButton" name="pushButton_3">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QPushButton" name="pushButton_6">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QPushButton" name="pushButton_5">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QPushButton" name="pushButton_2">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- <item>\r
- <widget class="QPushButton" name="pushButton">\r
- <property name="minimumSize">\r
- <size>\r
- <width>1</width>\r
- <height>0</height>\r
- </size>\r
- </property>\r
- <property name="focusPolicy">\r
- <enum>Qt::NoFocus</enum>\r
- </property>\r
- <property name="text">\r
- <string>PushButton</string>\r
- </property>\r
- </widget>\r
- </item>\r
- </layout>\r
- </item>\r
</layout>\r
</widget>\r
<widget class="QToolBar" name="mainToolBar">\r
<addaction name="mark_AllOff"/>\r
<addaction name="separator"/>\r
<addaction name="view_Refresh"/>\r
+ <addaction name="view_HalfMode"/>\r
<addaction name="view_Filter"/>\r
<addaction name="separator"/>\r
<addaction name="move_Back"/>\r
<addaction name="view_ToOther"/>\r
<addaction name="view_Swap"/>\r
<addaction name="view_Refresh"/>\r
+ <addaction name="view_HalfMode"/>\r
<addaction name="separator"/>\r
<addaction name="view_Hidden"/>\r
<addaction name="view_System"/>\r
<string>Alt+Down</string>\r
</property>\r
</action>\r
+ <action name="key_Left">\r
+ <property name="text">\r
+ <string>key_Left</string>\r
+ </property>\r
+ <property name="shortcut">\r
+ <string>Left</string>\r
+ </property>\r
+ </action>\r
+ <action name="key_Right">\r
+ <property name="text">\r
+ <string>key_Right</string>\r
+ </property>\r
+ <property name="shortcut">\r
+ <string>Right</string>\r
+ </property>\r
+ </action>\r
+ <action name="view_HalfMode">\r
+ <property name="checkable">\r
+ <bool>true</bool>\r
+ </property>\r
+ <property name="icon">\r
+ <iconset resource="resource.qrc">\r
+ <normaloff>:/images/Preview.png</normaloff>:/images/Preview.png</iconset>\r
+ </property>\r
+ <property name="text">\r
+ <string>片面ビューアモード</string>\r
+ </property>\r
+ <property name="toolTip">\r
+ <string>片面ビューアモード</string>\r
+ </property>\r
+ <property name="shortcut">\r
+ <string>V</string>\r
+ </property>\r
+ </action>\r
</widget>\r
<layoutdefault spacing="6" margin="11"/>\r
<customwidgets>\r
<customwidget>\r
- <class>SimpleTextView</class>\r
- <extends>QPlainTextEdit</extends>\r
- <header>simpletextview.h</header>\r
- </customwidget>\r
- <customwidget>\r
- <class>SearchBox</class>\r
- <extends>QLineEdit</extends>\r
- <header>searchbox.h</header>\r
- </customwidget>\r
- <customwidget>\r
- <class>FolderView</class>\r
- <extends>QTableView</extends>\r
- <header>folderview.h</header>\r
- </customwidget>\r
- <customwidget>\r
- <class>LocationBox</class>\r
- <extends>QLineEdit</extends>\r
- <header>locationbox.h</header>\r
- </customwidget>\r
- <customwidget>\r
- <class>SimpleImageView</class>\r
- <extends>QGraphicsView</extends>\r
- <header>simpleimageview.h</header>\r
+ <class>AnyView</class>\r
+ <extends>QWidget</extends>\r
+ <header>anyview.h</header>\r
+ <container>1</container>\r
</customwidget>\r
</customwidgets>\r
<resources>\r
m_copy = new QAction(tr("選択範囲をクリップボードにコピー"), this);
m_back = new QAction(tr("戻る"), this);
+ m_convEUC->setObjectName("convertFromEUC");
+ m_convJIS->setObjectName("convertFromJIS");
+ m_convSJIS->setObjectName("convertFromSJIS");
+ m_convUTF8->setObjectName("convertFromUTF8");
+ m_convUTF16->setObjectName("convertFromUTF16");
+ m_convUTF16BE->setObjectName("convertFromUTF16BE");
+ m_convUTF16LE->setObjectName("convertFromUTF16LE");
+ m_copy->setObjectName("copy");
+ m_back->setObjectName("back");
+
m_convEUC->setShortcut(QKeySequence("Shift+E"));
m_convJIS->setShortcut(QKeySequence("Shift+J"));
m_convSJIS->setShortcut(QKeySequence("Shift+S"));
m_copy->setShortcut(QKeySequence::Copy);
m_back->setShortcut(QKeySequence("Return"));
+ QList<QKeySequence> shortcuts;
+ shortcuts = m_back->shortcuts();
+ shortcuts.append(QKeySequence("Backspace"));
+ m_back->setShortcuts(shortcuts);
+
connect(m_convEUC, SIGNAL(triggered()), this, SLOT(convertFromEUC()));
connect(m_convJIS, SIGNAL(triggered()), this, SLOT(convertFromJIS()));
connect(m_convSJIS, SIGNAL(triggered()), this, SLOT(convertFromSJIS()));
{
QString ksq = KeyEventToSequence(event);
- if (ksq == "Return" || ksq == "Backspace" || ksq == "W") {
- emit viewFinished(this);
+ if (ProcessShortcut(ksq, this)) {
event->accept();
return;
}
- if (!ksq.isEmpty()) {
- foreach (QObject *obj, this->children()) {
- QAction *action = qobject_cast<QAction*>(obj);
- if (action && action->isEnabled()) {
- foreach (const QKeySequence &keySeq, action->shortcuts()) {
- if (ksq == keySeq.toString()) {
- qDebug() << "emit " << ksq << " " << action->objectName();
- emit action->triggered();
- event->accept();
- return;
- }
- }
- }
- }
-
- foreach (QObject *obj, getMainWnd()->children()) {
- QAction *action = qobject_cast<QAction*>(obj);
- if (action && action->isEnabled()) {
- foreach (const QKeySequence &keySeq, action->shortcuts()) {
- if (ksq == keySeq.toString()) {
- qDebug() << "emit " << ksq << " " << action->objectName();
- emit action->triggered();
- event->accept();
- return;
- }
- }
- }
- }
- }
-
- if (ksq != "Down" && ksq != "Up") {
- qDebug() << ksq;
+ if (ProcessShortcut(ksq, getMainWnd())) {
+ event->accept();
+ return;
}
QPlainTextEdit::keyPressEvent(event);
#ifndef VERSION_H
#define VERSION_H
-#define VERSION_VALUE 0.13
+#define VERSION_VALUE 0.14
#endif // VERSION_H