OSDN Git Service

Ver0.14
authorMasayuki Satoh <miyabi.satoh@gmail.com>
Wed, 27 Aug 2014 07:45:10 +0000 (16:45 +0900)
committerMasayuki Satoh <miyabi.satoh@gmail.com>
Wed, 27 Aug 2014 07:45:10 +0000 (16:45 +0900)
19 files changed:
Gefu.pro
README.md
ReadMe.txt
anyview.cpp [new file with mode: 0644]
anyview.h [new file with mode: 0644]
anyview.ui [new file with mode: 0644]
common.h
folderpanel.cpp [new file with mode: 0644]
folderpanel.h [new file with mode: 0644]
folderpanel.ui [new file with mode: 0644]
folderview.cpp
folderview.h
keybind.txt [new file with mode: 0644]
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
simpletextview.cpp
version.h

index 525b5d0..e57c1cb 100644 (file)
--- a/Gefu.pro
+++ b/Gefu.pro
@@ -35,7 +35,9 @@ SOURCES += main.cpp\
     searchbox.cpp \
     folderview.cpp \
     locationbox.cpp \
-    simpleimageview.cpp
+    simpleimageview.cpp \
+    anyview.cpp \
+    folderpanel.cpp
 
 HEADERS  += mainwindow.h \
     renamesingledialog.h \
@@ -59,7 +61,9 @@ HEADERS  += mainwindow.h \
     folderview.h \
     locationbox.h \
     version.h \
-    simpleimageview.h
+    simpleimageview.h \
+    anyview.h \
+    folderpanel.h
 
 FORMS    += mainwindow.ui \
     renamesingledialog.ui \
@@ -68,7 +72,9 @@ FORMS    += mainwindow.ui \
     overwritedialog.ui \
     sortdialog.ui \
     historydialog.ui \
-    preferencedialog.ui
+    preferencedialog.ui \
+    anyview.ui \
+    folderpanel.ui
 
 RESOURCES += \
     resource.qrc
@@ -76,7 +82,8 @@ RESOURCES += \
 OTHER_FILES += \
     Gefu.rc \
     README.md \
-    ReadMe.txt
+    ReadMe.txt \
+    keybind.txt
 
 macx {
     ICON = ./images/Gefu.icns
index 8ab6c8e..34e8375 100644 (file)
--- a/README.md
+++ b/README.md
@@ -12,6 +12,11 @@ Gefu is an Experimental File Utility.
   * 簡易FTPクライアント
   * SNS連携(タイムライン表示とか) ← ファイラーの機能か?
 
+#### 2014/08/27 Ver0.14
+  * テキストビューアで、左右矢印キーをPageUp/Downに割り当てた。
+  * 「片面ビューアモード」を追加した。
+    * 隣のペインがビューアモードになり、カーソル位置のアイテム内容を表示する。
+
 #### 2014/08/26 Ver0.13 公開
   * 拡張子・サイズ・更新日時の列幅をフォントサイズに応じて調整するようにした。
   * 「最新バージョンをチェック」を「アップデートの確認」に文言変更。
@@ -20,7 +25,8 @@ Gefu is an Experimental File Utility.
   * テキストビューアについても、メニューまたはキーボードで文字の大きさを変更できるようにした。
   * テキストビューアについても、カーソル移動系アクションを有効にした。
   * 不具合修正
-    * 環境設定ダイアログで、「起動時のアップデート確認」の設定表示・変更ができていなかった。
+    * 環境設定ダイアログで、「起動時のアップデート確認」の設定表示・変更ができていなかったのを修正。
+    * アイテム移動時の確認・完了表示に関するオプションが無視されていたのを修正。
 
 #### 2014/08/26 Ver0.12 公開
   * コンテキストメニューを実装。
index 668fce6..f06cb2b 100644 (file)
@@ -1,8 +1,8 @@
 ===============================================================================
     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
   * 拡張子・サイズ・更新日時の列幅をフォントサイズに応じて調整するようにした。
   * 「最新バージョンをチェック」を「アップデートの確認」に文言変更。
diff --git a/anyview.cpp b/anyview.cpp
new file mode 100644 (file)
index 0000000..0eff910
--- /dev/null
@@ -0,0 +1,118 @@
+#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();
+    }
+}
diff --git a/anyview.h b/anyview.h
new file mode 100644 (file)
index 0000000..da36753
--- /dev/null
+++ b/anyview.h
@@ -0,0 +1,45 @@
+#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
diff --git a/anyview.ui b/anyview.ui
new file mode 100644 (file)
index 0000000..1def817
--- /dev/null
@@ -0,0 +1,83 @@
+<?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>
index 1861f24..5bc1e0e 100644 (file)
--- a/common.h
+++ b/common.h
@@ -4,12 +4,14 @@
 #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
diff --git a/folderpanel.cpp b/folderpanel.cpp
new file mode 100644 (file)
index 0000000..1420f80
--- /dev/null
@@ -0,0 +1,42 @@
+#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();
+}
diff --git a/folderpanel.h b/folderpanel.h
new file mode 100644 (file)
index 0000000..129fc60
--- /dev/null
@@ -0,0 +1,36 @@
+#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
diff --git a/folderpanel.ui b/folderpanel.ui
new file mode 100644 (file)
index 0000000..a3df706
--- /dev/null
@@ -0,0 +1,117 @@
+<?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>
index 3e9c41e..7282776 100644 (file)
@@ -1,4 +1,5 @@
 #include "common.h"
+#include "mainwindow.h"
 #include "folderview.h"
 
 #include <QDebug>
@@ -347,14 +348,21 @@ void FolderView::keyPressEvent(QKeyEvent *event)
 {
     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)
index 201efb7..e25e503 100644 (file)
@@ -62,7 +62,7 @@ signals:
     void retrieveStarted(const QString &path);
     void retrieveFinished();
     void requestContextMenu(QContextMenuEvent *event);
-    void keyPressed(QKeyEvent *event);
+//    void keyPressed(QKeyEvent *event);
 
 public slots:
 
diff --git a/keybind.txt b/keybind.txt
new file mode 100644 (file)
index 0000000..99bde58
--- /dev/null
@@ -0,0 +1,60 @@
+== キーバインド一覧
+= フォルダビュー
+||キー      ||装飾なし                           ||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                           ||
index 1465830..af7b1f4 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -1,9 +1,41 @@
 #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
@@ -157,7 +189,7 @@ QString ViewerIgnoreExt()
     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
index 7bcbef7..3ab7d30 100644 (file)
@@ -15,6 +15,7 @@
 #include "renamemultidialog.h"\r
 #include "historydialog.h"\r
 #include "sortdialog.h"\r
+#include "simpletextview.h"\r
 \r
 #include <QCheckBox>\r
 #include <QCloseEvent>\r
@@ -29,6 +30,7 @@
 #include <QDesktopServices>\r
 #include <QClipboard>\r
 #include <QFileDialog>\r
+#include <folderpanel.h>\r
 \r
 MainWindow* getMainWnd()\r
 {\r
@@ -53,21 +55,29 @@ MainWindow::MainWindow(QWidget *parent) :
 \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
@@ -76,7 +86,7 @@ MainWindow::MainWindow(QWidget *parent) :
         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
@@ -190,8 +200,11 @@ MainWindow::MainWindow(QWidget *parent) :
         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
@@ -203,24 +216,33 @@ FolderView* MainWindow::otherSideView(const FolderView *view) const
 {\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
@@ -379,56 +401,60 @@ void MainWindow::moveItems()
     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
@@ -521,6 +547,21 @@ void MainWindow::currentChange(const QFileInfo &info)
         }\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
@@ -600,8 +641,8 @@ void MainWindow::copyItems(const QFileInfoList &list, const QString &tgtDir)
     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
@@ -750,8 +791,8 @@ void MainWindow::deleteItems()
     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
@@ -780,8 +821,6 @@ void MainWindow::open(const QModelIndex &index)
         }\r
     }\r
 \r
-    setUpdatesEnabled(false);\r
-\r
     foreach (QObject *obj, this->children()) {\r
         QAction *action = qobject_cast<QAction*>(obj);\r
         if (action) {\r
@@ -799,16 +838,8 @@ void MainWindow::open(const QModelIndex &index)
     }\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
@@ -948,12 +979,12 @@ void MainWindow::retrieveStart(const QString &path)
     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
@@ -1035,15 +1066,54 @@ void MainWindow::swapView()
 {\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
@@ -1090,14 +1160,14 @@ void MainWindow::searchItem(const QString &text)
 \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
@@ -1131,68 +1201,79 @@ void MainWindow::setCursorToBegin()
 {\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
@@ -1212,20 +1293,22 @@ void MainWindow::changeFontSize(int diff)
 {\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
@@ -1288,12 +1371,12 @@ void MainWindow::toggleSearchBox(bool checked)
 \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
@@ -1301,14 +1384,14 @@ void MainWindow::toggleSearchBox(bool checked)
         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
@@ -1325,9 +1408,10 @@ void MainWindow::openRequest(const QFileInfo &info)
     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
@@ -1342,11 +1426,13 @@ void MainWindow::showPreferenceDialog()
 \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
@@ -1356,22 +1442,22 @@ void MainWindow::toggleShowHiddenFiles(bool checked)
 {\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
@@ -1465,7 +1551,8 @@ void MainWindow::viewFinish(QWidget *sender)
 {\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
@@ -1475,6 +1562,9 @@ void MainWindow::initActionConnections()
 {\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
@@ -1515,6 +1605,7 @@ void MainWindow::initActionConnections()
     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
@@ -1528,11 +1619,18 @@ FolderView *MainWindow::folderView() const
     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
@@ -1559,12 +1657,12 @@ SearchBox *MainWindow::searchBox(FolderView *view) const
 {\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
@@ -1585,7 +1683,11 @@ void MainWindow::updateActions()
 {\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
@@ -1597,20 +1699,25 @@ void MainWindow::updateActions()
         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
@@ -1623,6 +1730,9 @@ void MainWindow::updateActions()
         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
@@ -1651,12 +1761,12 @@ void MainWindow::setNameFilters(FolderView *view, const QString &filters)
 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
@@ -1692,8 +1802,8 @@ void MainWindow::closeEvent(QCloseEvent *event)
         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
index 6e5613e..7bbbef8 100644 (file)
@@ -39,7 +39,9 @@ public slots:
     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
@@ -91,6 +93,7 @@ public slots:
     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
index 5976040..43cbca9 100644 (file)
@@ -7,7 +7,7 @@
     <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
index 1a55536..30c1c68 100644 (file)
@@ -46,6 +46,16 @@ SimpleTextView::SimpleTextView(QWidget *parent) :
     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"));
@@ -56,6 +66,11 @@ SimpleTextView::SimpleTextView(QWidget *parent) :
     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()));
@@ -207,44 +222,14 @@ void SimpleTextView::keyPressEvent(QKeyEvent *event)
 {
     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);
index 89b6933..4e0344f 100644 (file)
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
 #ifndef VERSION_H
 #define VERSION_H
 
-#define VERSION_VALUE   0.13
+#define VERSION_VALUE   0.14
 
 #endif // VERSION_H