OSDN Git Service

Ver0.09pre
authorMasayuki Satoh <miyabi.satoh@gmail.com>
Sat, 23 Aug 2014 14:53:15 +0000 (23:53 +0900)
committerMasayuki Satoh <miyabi.satoh@gmail.com>
Sat, 23 Aug 2014 14:53:15 +0000 (23:53 +0900)
README.md
common.h
simpletextview.cpp
simpletextview.h

index 71f6a44..53b429c 100644 (file)
--- a/README.md
+++ b/README.md
@@ -9,18 +9,18 @@ Gefu is an Experimental File Utility.
     - ファンクションキー
     - キーバインドカスタマイズ
 - ファイル検索
-- 簡易テキストビューア
 - 簡易画像ビューア
 - 簡易アーカイバ
 - 簡易FTPクライアント
 - SNS連携(タイムライン表示とか) ← ファイラーの機能か?
 
-#### 2014/08/23 Ver0.09
+#### 2014/08/24 Ver0.09
 - 左右矢印キーに機能割り当て
     - 左ペインで左矢印/右ペインで右矢印 → 親フォルダに移動
     - 左ペインで右矢印/右ペインで左矢印 → 反対側のペインにフォーカス
 - ファイル名をクリップボードにコピーを実装。
 - フォルダ名をクリップボードにコピーを実装。
+- 簡易テキストビューアをとりあえず実装。→ 次バージョンでオプション設定等
 - 不具合修正
     - Windows版で初回起動時、タイトルバーが画面外に出ていた。→ デフォルト位置・サイズ変更。
 
index 5447ebf..51f1c12 100644 (file)
--- a/common.h
+++ b/common.h
@@ -8,7 +8,7 @@ class MainWindow;
 extern MainWindow* getMainWnd();\r
 extern QString FilesizeToString(quint64 size);\r
 \r
-#define VERSION_VALUE   0.08\r
+#define VERSION_VALUE   0.09\r
 \r
 #define slash   QString("/")\r
 #define QQ(x)   ("\"" + QString(x) + "\"")\r
index 67a500c..2588732 100644 (file)
@@ -1,9 +1,11 @@
 #include "common.h"
 #include "simpletextview.h"
+#include "mainwindow.h"
 
 #include <QDebug>
 #include <QMenu>
 #include <QSettings>
+#include <QShortcut>
 #include <QTextCodec>
 
 SimpleTextView::SimpleTextView(QWidget *parent) :
@@ -41,7 +43,41 @@ SimpleTextView::SimpleTextView(QWidget *parent) :
     m_convUTF16BE = new QAction(tr("UTF-16BEで再読込"), this);
     m_convUTF16LE = new QAction(tr("UTF-16LEで再読込"), this);
 
+    m_convEUC->setShortcut(QKeySequence("E"));
+    m_convJIS->setShortcut(QKeySequence("J"));
+    m_convSJIS->setShortcut(QKeySequence("S"));
+    m_convUTF8->setShortcut(QKeySequence("U"));
+    m_convUTF16BE->setShortcut(QKeySequence("B"));
+    m_convUTF16LE->setShortcut(QKeySequence("L"));
+
+    connect(m_convEUC, SIGNAL(triggered()), this, SLOT(convertFromEUC()));
+    connect(m_convJIS, SIGNAL(triggered()), this, SLOT(convertFromJIS()));
     connect(m_convSJIS, SIGNAL(triggered()), this, SLOT(convertFromSJIS()));
+    connect(m_convUTF8, SIGNAL(triggered()), this, SLOT(convertFromUTF8()));
+    connect(m_convUTF16BE, SIGNAL(triggered()), this, SLOT(convertFromUTF16BE()));
+    connect(m_convUTF16LE, SIGNAL(triggered()), this, SLOT(convertFromUTF16LE()));
+}
+
+void SimpleTextView::setSource(const QByteArray &source)
+{
+    m_source = source;
+#ifdef Q_OS_MAC
+    convertFromUTF8();
+#else
+    convertFromSJIS();
+#endif
+}
+
+void SimpleTextView::convertFromEUC()
+{
+    QTextCodec *codec = QTextCodec::codecForName("EUC-JP");
+    setPlainText(codec->toUnicode(m_source));
+}
+
+void SimpleTextView::convertFromJIS()
+{
+    QTextCodec *codec = QTextCodec::codecForName("ISO 2022-JP");
+    setPlainText(codec->toUnicode(m_source));
 }
 
 void SimpleTextView::convertFromSJIS()
@@ -50,10 +86,22 @@ void SimpleTextView::convertFromSJIS()
     setPlainText(codec->toUnicode(m_source));
 }
 
-void SimpleTextView::setSource(const QByteArray &source)
+void SimpleTextView::convertFromUTF8()
 {
-    m_source = source;
-    convertFromSJIS();
+    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
+    setPlainText(codec->toUnicode(m_source));
+}
+
+void SimpleTextView::convertFromUTF16BE()
+{
+    QTextCodec *codec = QTextCodec::codecForName("UTF-16BE");
+    setPlainText(codec->toUnicode(m_source));
+}
+
+void SimpleTextView::convertFromUTF16LE()
+{
+    QTextCodec *codec = QTextCodec::codecForName("UTF-16LE");
+    setPlainText(codec->toUnicode(m_source));
 }
 
 void SimpleTextView::keyPressEvent(QKeyEvent *event)
@@ -73,9 +121,26 @@ void SimpleTextView::keyPressEvent(QKeyEvent *event)
         return;
     }
 
+    if (!ksq.isEmpty()) {
+        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;
     }
+
     QPlainTextEdit::keyPressEvent(event);
 }
 
index cec2497..8fe61e2 100644 (file)
@@ -26,7 +26,12 @@ signals:
 public slots:
 
 private slots:
+    void convertFromEUC();
+    void convertFromJIS();
     void convertFromSJIS();
+    void convertFromUTF8();
+    void convertFromUTF16BE();
+    void convertFromUTF16LE();
 
     // QWidget interface
 protected: