locationbox.cpp \
simpleimageview.cpp \
anyview.cpp \
- folderpanel.cpp
+ folderpanel.cpp \
+ bookmarkdialog.cpp
HEADERS += mainwindow.h \
renamesingledialog.h \
version.h \
simpleimageview.h \
anyview.h \
- folderpanel.h
+ folderpanel.h \
+ bookmarkdialog.h
FORMS += mainwindow.ui \
renamesingledialog.ui \
historydialog.ui \
preferencedialog.ui \
anyview.ui \
- folderpanel.ui
+ folderpanel.ui \
+ bookmarkdialog.ui
RESOURCES += \
resource.qrc
* 簡易FTPクライアント
* SNS連携(タイムライン表示とか) ← ファイラーの機能か?
+#### 2014/08/29 Ver0.17
+ * コンテキストメニューにファイル操作系アクションを追加。
+ * ブックマーク機能を実装。
+ * 不具合修正
+ * 検索ボックスでのEnterキーイベントが2回処理されていたのを修正。
+
#### 2014/08/28 Ver0.16
* 設定ファイルの格納先を変更。
* アップデート確認先のURLを変更。
\r
◇ インストール ◇\r
Windows\r
- 1. GefuXXX.zip をダウンロード、展開します。\r
- 2. Gefu_QtDLL.zip をダウンロード、展開します。\r
- 3. 展開された Gefu.exe とQtライブラリ(*.dll)を同じフォルダに格納します。\r
+ 1. GefuXXX_full_setup.exe をダウンロード、実行します。\r
+ 2. インストールウィザードの指示に従ってください。\r
\r
Mac\r
1. GefuXXX.app.zip をダウンロード、展開します。\r
\r
◇ アップデート ◇\r
Windows\r
- 1. GefuXXX.zip をダウンロード、展開します。\r
- 2. Gefu.exe が起動している場合は、終了します。\r
- 3. 展開された Gefu.exe を、既存の Gefu.exe に上書きします。\r
+ 1. GefuXXX_Setuo.exe をダウンロード、実行します。\r
+ 2. インストールウィザードの指示に従ってください。\r
\r
Mac\r
1. GefuXXX.app.zip をダウンロード、展開します。\r
\r
◇ アンインストール ◇\r
Windows\r
- 1. Gefu.exe と Qtライブラリ(*.dll)を削除します。\r
- 2. 設定ファイルまで削除したい場合は、以下のファイルを削除します。\r
- %APPDATA%¥miyabi¥Gefu.ini\r
+ 1. スタートメニューからGefu → Uninstallをクリックします。\r
+ 2. 画面の指示に従ってください。\r
\r
Mac\r
1. Gefu.app を削除します。\r
2. 設定ファイルまで削除したい場合は、以下のファイルを削除します。\r
- ~/.config/rakusaba.jp/Gefu.ini\r
+ ~/.config/sourceforge.jp/Gefu.ini\r
\r
◇ 使い方 ◇\r
基本的には、WindowsのエクスプローラやMacのFinderと同じ感覚で使ってください。\r
導入方法などを解説しています。\r
Wiki ... http://sourceforge.jp/projects/gefu/wiki/FrontPage\r
各種ドキュメントを閲覧できます。\r
+ Gefuの作業部屋 ... http://masayuki_satoh.b.sourceforge.jp/\r
+ 開発ブログです。\r
\r
◇ 免責事項 ◇\r
- Gefu(げふぅ)はオープンソース・フリーソフトウェアです。\r
◇ 連絡先 ◇\r
Web: https://sourceforge.jp/projects/gefu/\r
http://gefu.sourceforge.jp/\r
+ http://masayuki_satoh.b.sourceforge.jp/\r
Mail: miyabi.satoh@gmail.com\r
Twitter: https://twitter.com/miyabi_satoh\r
\r
◇ 履歴 ◇\r
+#### 2014/08/29 Ver0.17\r
+ * コンテキストメニューにファイル操作系アクションを追加。\r
+ * ブックマーク機能を実装。\r
+ * 不具合修正\r
+ * 検索ボックスでのEnterキーイベントが2回処理されていたのを修正。\r
+\r
#### 2014/08/28 Ver0.16\r
* 設定ファイルの格納先を変更。\r
* アップデート確認先のURLを変更。\r
--- /dev/null
+#include "common.h"
+#include "bookmarkdialog.h"
+#include "ui_bookmarkdialog.h"
+
+#include <QDebug>
+#include <QFileDialog>
+#include <QFileInfo>
+#include <QMessageBox>
+#include <QSettings>
+//#include <QVector>
+
+BookmarkDialog::BookmarkDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::BookmarkDialog),
+ m_isReadOnly(false)
+{
+ ui->setupUi(this);
+ resize(parent->width() * 0.8, height());
+
+ ui->tableWidget->setColumnCount(2);
+}
+
+BookmarkDialog::~BookmarkDialog()
+{
+ delete ui;
+}
+
+void BookmarkDialog::setEditMode(bool edit)
+{
+ ui->buttonAdd->setVisible(edit);
+ ui->buttonDelete->setVisible(edit);
+ ui->buttonDown->setVisible(edit);
+ ui->buttonUp->setVisible(edit);
+
+ m_isReadOnly = !edit;
+ if (m_isReadOnly) {
+ setWindowTitle(tr("ブックマークを開く"));
+ }
+
+ QSettings settings;
+ for (int i = 0; ; i++) {
+ QString name = settings.value(IniKey_BookmarkEntryName(i), "").toString();
+ if (name.isEmpty()) {
+ break;
+ }
+
+ QString path = settings.value(IniKey_BookmarkEntryPath(i)).toString();
+ insertData(i, name, path);
+ }
+ ui->tableWidget->resizeColumnsToContents();
+ ui->tableWidget->resizeRowsToContents();
+}
+
+int BookmarkDialog::selectedIndex() const
+{
+ return ui->tableWidget->currentRow();
+}
+
+void BookmarkDialog::insertData(int row, const QString &name, const QString &path)
+{
+ ui->tableWidget->insertRow(row);
+
+ QTableWidgetItem *iName = new QTableWidgetItem(name);
+ if (m_isReadOnly) {
+ iName->setFlags(iName->flags() ^ Qt::ItemIsEditable);
+ }
+ ui->tableWidget->setItem(row, 0, iName);
+
+ QTableWidgetItem *iPath = new QTableWidgetItem(path);
+ iPath->setFlags(iPath->flags() ^ Qt::ItemIsEditable);
+ ui->tableWidget->setItem(row, 1, iPath);
+}
+
+void BookmarkDialog::moveSelectedRows(bool up)
+{
+ qDebug() << "BookmarkDialog::moveSelectedRows();" << up;
+
+ QList<QTableWidgetItem*> selected = ui->tableWidget->selectedItems();
+ if (selected.isEmpty()) {
+ qDebug() << "Not selected.";
+ return;
+ }
+
+ QVector<QString> before;
+ QVector<QString> after;
+
+ for (int i = 0; i < ui->tableWidget->rowCount(); i++) {
+ QString name = ui->tableWidget->item(i, 0)->data(Qt::DisplayRole).toString();
+ QString path = ui->tableWidget->item(i, 1)->data(Qt::DisplayRole).toString();
+ before << name + "¥t" + path;
+ }
+ qDebug() << "set before" << before;
+
+ after.resize(before.size());
+
+ QVector<int> newRows;
+ foreach (QTableWidgetItem *item, selected) {
+ if (item->column() != 0) {
+ int newRow = (up) ? item->row() - 1 : item->row() + 1;
+ if (newRow < 0) {
+ return;
+ }
+ else if (newRow >= ui->tableWidget->rowCount()) {
+ return;
+ }
+
+ after[newRow] = before[item->row()];
+ before[item->row()] = QString::null;
+ newRows << newRow;
+ }
+ }
+
+ qDebug() << "set after(1)" << after;
+ int n = 0;
+ for (int i = 0; i < ui->tableWidget->rowCount(); i++) {
+ if (!before[i].isEmpty()) {
+ while (!after[n].isEmpty()) {
+ n++;
+ }
+ after[n] = before[i];
+ }
+ }
+ qDebug() << "set after(2)" << after;
+
+ while (ui->tableWidget->rowCount() > 0) {
+ ui->tableWidget->removeRow(0);
+ }
+
+ n = 0;
+ foreach (const QString &val, after) {
+ QStringList list = val.split("¥t");
+ insertData(n, list[0], list[1]);
+ n++;
+ }
+
+ ui->tableWidget->resizeColumnsToContents();
+ ui->tableWidget->resizeRowsToContents();
+
+ foreach (int i, newRows) {
+ for (n = 0; n < 2; n++) {
+ QModelIndex index = ui->tableWidget->model()->index(i, n);
+ ui->tableWidget->selectionModel()->select(index, QItemSelectionModel::Select);
+ }
+ }
+
+}
+
+void BookmarkDialog::accept()
+{
+ QSettings settings;
+ QModelIndex index;
+ int i;
+ for (i = 0; i < ui->tableWidget->rowCount(); i++) {
+ index = ui->tableWidget->model()->index(i, 0);
+ QString name = ui->tableWidget->model()->data(index).toString();
+ if (name.isEmpty()) {
+ ui->tableWidget->setCurrentCell(i, 0);
+ QMessageBox::critical(this, tr("エラー"), tr("名前が未入力です。"));
+ return;
+ }
+
+ index = ui->tableWidget->model()->index(i, 1);
+ QString path = ui->tableWidget->model()->data(index).toString();
+
+ settings.setValue(IniKey_BookmarkEntryName(i), name);
+ settings.setValue(IniKey_BookmarkEntryPath(i), path);
+ }
+ while (!settings.value(IniKey_BookmarkEntryName(i), "").toString().isEmpty()) {
+ settings.remove(IniKey_BookmarkEntryName(i));
+ settings.remove(IniKey_BookmarkEntryPath(i));
+ i++;
+ }
+
+ QDialog::accept();
+}
+
+void BookmarkDialog::on_buttonDelete_clicked()
+{
+ foreach (const QTableWidgetItem *item, ui->tableWidget->selectedItems()) {
+ if (item->column() == 0) {
+ ui->tableWidget->removeRow(item->row());
+ }
+ }
+}
+
+void BookmarkDialog::on_buttonUp_clicked()
+{
+ moveSelectedRows(true);
+}
+
+void BookmarkDialog::on_buttonDown_clicked()
+{
+ moveSelectedRows(false);
+}
+
+void BookmarkDialog::on_buttonAdd_clicked()
+{
+ static QString initPath = QDir::homePath();
+
+ QString path = QFileDialog::getExistingDirectory(
+ this, tr("フォルダを選択"), initPath);
+ if (!path.isEmpty()) {
+ QFileInfo info(path);
+ QString name(info.fileName());
+ if (name.isEmpty()) {
+ name = "root";
+ }
+ insertData(ui->tableWidget->rowCount(), name, path);
+ initPath = path;
+
+ ui->tableWidget->resizeColumnsToContents();
+ ui->tableWidget->resizeRowsToContents();
+ }
+}
--- /dev/null
+#ifndef BOOKMARKDIALOG_H
+#define BOOKMARKDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class BookmarkDialog;
+}
+
+class BookmarkDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit BookmarkDialog(QWidget *parent = 0);
+ ~BookmarkDialog();
+
+ void setEditMode(bool edit);
+ int selectedIndex() const;
+
+private:
+ Ui::BookmarkDialog *ui;
+ bool m_isReadOnly;
+
+ void insertData(int row, const QString &name, const QString &path);
+ void moveSelectedRows(bool up);
+
+ // QDialog interface
+public slots:
+ void accept();
+
+private slots:
+ void on_buttonDelete_clicked();
+ void on_buttonUp_clicked();
+ void on_buttonDown_clicked();
+ void on_buttonAdd_clicked();
+};
+
+#endif // BOOKMARKDIALOG_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BookmarkDialog</class>
+ <widget class="QDialog" name="BookmarkDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>360</width>
+ <height>267</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>ブックマークを編集</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QTableWidget" name="tableWidget">
+ <property name="autoScroll">
+ <bool>false</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="textElideMode">
+ <enum>Qt::ElideMiddle</enum>
+ </property>
+ <attribute name="horizontalHeaderHighlightSections">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ <column>
+ <property name="text">
+ <string>表示名</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>パス</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="buttuns">
+ <item>
+ <widget class="QPushButton" name="buttonUp">
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="text">
+ <string>↑</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonDown">
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="text">
+ <string>↓</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonAdd">
+ <property name="text">
+ <string>追加</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonDelete">
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="text">
+ <string>削除</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>BookmarkDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>BookmarkDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
\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
#define IniKey_MoveAfterCreateFolder "Common/MoveAfterFolderCreation"\r
#define IniKey_OpenAfterCreateFile "Common/OpenAfterFileCreation"\r
#define IniKey_CheckUpdates "Common/CheckUpdates"\r
+#define IniKey_BookmarkEntryName(x) QString("Bookmark/Name%1").arg(x)\r
+#define IniKey_BookmarkEntryPath(x) QString("Bookmark/Path%1").arg(x)\r
#define IniKey_BootSizeSpec "BootAndExit/SizeSpec"\r
#define IniKey_BootSizeRel "BootAndExit/SizeRel"\r
#define IniKey_BootSizeAbs "BootAndExit/SizeAbs"\r
#include "ui_folderpanel.h"
#include <QDebug>
+#include <QSettings>
+#include <QStatusBar>
FolderPanel::FolderPanel(QWidget *parent) :
QWidget(parent),
- ui(new Ui::FolderPanel)
+ ui(new Ui::FolderPanel),
+ m_mainWnd(NULL)
{
ui->setupUi(this);
}
void FolderPanel::initialize(MainWindow *mainWnd)
{
qDebug() << "FolderPanel::initialize();";
+ m_mainWnd = mainWnd;
// シグナル&スロット
- connect(ui->folderView, SIGNAL(dataChanged()), this, SLOT(dataChange()));
+ connect(ui->searchBox, SIGNAL(textEdited(QString)), this, SLOT(searchItem(QString)));
connect(ui->folderView, SIGNAL(doubleClicked(QModelIndex)), mainWnd, SLOT(open(QModelIndex)));
connect(ui->folderView, SIGNAL(dropAccepted(QFileInfoList)), mainWnd, SLOT(dropAccept(QFileInfoList)));
connect(ui->folderView, SIGNAL(currentChanged(QFileInfo)), mainWnd, SLOT(currentChange(QFileInfo)));
- connect(ui->folderView, SIGNAL(itemFound()), mainWnd, SLOT(itemFound()));
- connect(ui->folderView, SIGNAL(itemNotFound()), mainWnd, SLOT(itemNotFound()));
- connect(ui->folderView, SIGNAL(retrieveFinished()), mainWnd, SLOT(retrieveFinish()));
connect(ui->folderView, SIGNAL(requestContextMenu(QContextMenuEvent*)), mainWnd, SLOT(showContextMenu(QContextMenuEvent*)));
- connect(ui->folderView, SIGNAL(retrieveStarted(QString)), mainWnd, SLOT(retrieveStart(QString)));
connect(ui->folderView, SIGNAL(retrieveStarted(QString)), ui->locationBox, SLOT(setText(QString)));
- connect(ui->searchBox, SIGNAL(textEdited(QString)), mainWnd, SLOT(searchItem(QString)));
- connect(ui->searchBox, SIGNAL(returnPressed()), mainWnd, SLOT(returnPressInSearchBox()));
+ connect(ui->folderView, SIGNAL(dataChanged()), this, SLOT(dataChange()));
+ connect(ui->folderView, SIGNAL(itemFound()), this, SLOT(itemFound()));
+ connect(ui->folderView, SIGNAL(itemNotFound()), this, SLOT(itemNotFound()));
+ connect(ui->bookmarkBtn, SIGNAL(clicked()), this, SLOT(addBookmark()));
// 初期状態では検索ボックスは非表示
ui->searchBox->setVisible(false);
ui->locationBox->initialize();
// フォルダビューを初期化する
- ui->folderView->initialize();
+ ui->folderView->initialize(mainWnd);
}
LocationBox *FolderPanel::locationBox() const
}
}
+void FolderPanel::addBookmark()
+{
+ qDebug() << "FolderPanel::addBookmark();";
+
+ QSettings settings;
+ int i = 0;
+ while (!settings.value(IniKey_BookmarkEntryName(i), "").toString().isEmpty()) {
+ i++;
+ }
+
+ QFileInfo info(ui->folderView->dir());
+ QString name = info.fileName();
+ if (name.isEmpty()) {
+ name = "root";
+ }
+ settings.setValue(IniKey_BookmarkEntryName(i), name);
+ settings.setValue(IniKey_BookmarkEntryPath(i), info.absoluteFilePath());
+
+ m_mainWnd->statusBar()->showMessage(tr("%1をブックマークに追加しました").arg(name));
+}
+
+void FolderPanel::itemFound()
+{
+ qDebug() << "FolderPanel::itemFound";
+
+ QPalette pal = ui->searchBox->palette();
+ pal.setColor(QPalette::Text, QPalette().text().color());
+ ui->searchBox->setPalette(pal);
+}
+
+void FolderPanel::itemNotFound()
+{
+ qDebug() << "FolderPanel::itemNotFound";
+
+ QPalette pal = ui->searchBox->palette();
+ pal.setColor(QPalette::Text, Qt::red);
+ ui->searchBox->setPalette(pal);
+}
+
+void FolderPanel::searchItem(const QString &text)
+{
+ qDebug() << "FolderPanel::searchItem" << text;
+
+ if (text.right(1) == "/") {
+ // '/'が入力されたら、検索終了
+ ui->searchBox->setText(text.left(text.length() - 1));
+ ui->folderView->setFocus();
+ }
+ else {
+ ui->folderView->searchItem(ui->searchBox->text());
+ }
+}
+
void FolderPanel::focusInEvent(QFocusEvent *)
{
qDebug() << "FolderPanel::focusInEvent();";
private:
Ui::FolderPanel *ui;
+ MainWindow *m_mainWnd;
void showNameFilters();
public slots:
void dataChange();
+ void addBookmark();
+ void itemFound();
+ void itemNotFound();
+ void searchItem(const QString& text);
// QWidget interface
protected:
<number>0</number>
</property>
<item>
- <widget class="LocationBox" name="locationBox">
- <property name="focusPolicy">
- <enum>Qt::ClickFocus</enum>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
</property>
- </widget>
+ <item>
+ <widget class="LocationBox" name="locationBox">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="bookmarkBtn">
+ <property name="focusPolicy">
+ <enum>Qt::ClickFocus</enum>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resource.qrc">
+ <normaloff>:/images/Favourites.png</normaloff>:/images/Favourites.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
</item>
<item>
<widget class="FolderView" name="folderView">
<header>locationbox.h</header>
</customwidget>
</customwidgets>
- <resources/>
+ <resources>
+ <include location="resource.qrc"/>
+ </resources>
<connections/>
</ui>
#include <QApplication>
#include <QDrag>
#include <QMenu>
+#include <QStatusBar>
QString FilesizeToString(quint64 size)
{
FolderView::FolderView(QWidget *parent) :
QTableView(parent),
+ m_mainWnd(NULL),
m_model(),
m_dragStartPos(),
m_dragging(false)
}
}
-void FolderView::initialize()
+void FolderView::initialize(MainWindow *mainWnd)
{
qDebug() << side() << "initialize";
+ m_mainWnd = mainWnd;
+
setColumnWidth(0, 30);
// ソート順を初期化する
Q_ASSERT(QFileInfo(path).isDir());
+ m_mainWnd->statusBar()->showMessage(tr("ファイルリストを取得しています..."));
emit retrieveStarted(path);
setUpdatesEnabled(false);
m_history.add(path);
}
- emit retrieveFinished();
+ m_mainWnd->statusBar()->showMessage(tr("レディ"));
}
void FolderView::setFilter(QDir::Filters filter, bool enable)
#include "history.h"
#include <QTableView>
+class MainWindow;
class FolderView : public QTableView
{
QString side() const;
// actions
- void initialize();
+ void initialize(MainWindow *mainWnd);
void updateAppearance();
void refresh();
bool historyBack();
bool historyForward();
-
// getter
QFileInfo currentItem() const;
QString dir() const { return m_model.absolutePath(); }
void setSorting();
private:
+ MainWindow *m_mainWnd;
FileTableModel m_model;
History m_history;
QPoint m_dragStartPos;
void itemFound();
void itemNotFound();
void retrieveStarted(const QString &path);
- void retrieveFinished();
void requestContextMenu(QContextMenuEvent *event);
// void keyPressed(QKeyEvent *event);
\r
; HM NIS Edit Wizard helper defines\r
!define PRODUCT_NAME "Gefu"\r
-!define PRODUCT_VERSION "0.16"\r
+!define PRODUCT_VERSION "0.17"\r
!define PRODUCT_PUBLISHER "@miyabi_satoh"\r
!define PRODUCT_WEB_SITE "http://gefu.sourceforge.jp/"\r
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Gefu.exe"\r
; MUI end ------\r
\r
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
-OutFile "Gefu016_full_setup.exe"\r
+OutFile "Gefu017_full_setup.exe"\r
InstallDir "$PROGRAMFILES\Gefu"\r
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""\r
ShowInstDetails show\r
\r
; HM NIS Edit Wizard helper defines\r
!define PRODUCT_NAME "Gefu"\r
-!define PRODUCT_VERSION "0.16"\r
+!define PRODUCT_VERSION "0.17"\r
!define PRODUCT_PUBLISHER "@miyabi_satoh"\r
!define PRODUCT_WEB_SITE "http://gefu.sourceforge.jp/"\r
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Gefu.exe"\r
; MUI end ------\r
\r
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
-OutFile "Gefu016_Setup.exe"\r
+OutFile "Gefu017_Setup.exe"\r
InstallDir "$PROGRAMFILES\Gefu"\r
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""\r
ShowInstDetails show\r
= フォルダビュー
||キー ||装飾なし ||Shift ||Alt ||Ctrl(Command) ||覚え方 ||
||A ||すべてのファイルをマーク ||すべてマーク || || ||All ||
+||B ||ブックマークを表示 ||ブックマークを編集 || || ||Bookmark ||
||C ||ファイル名をクリップボードにコピー ||フルパスをクリップボードにコピー || ||隣のペインにアイテムをコピー ||Copy ||
||D || || || ||選択アイテムを削除 ||Delete ||
||E ||外部エディタで開く || || ||ファイルを作成 ||Edit, newの「E」 ||
||/ ||ファイル検索開始/終了 || || || || ||
||+ ||フォントサイズを大きく || || || || ||
||- ||フォントサイズを小さく || || || || ||
-||↑ ||カーソルを上に移動 ||隣ペインのカーソルを上に移動 ||隣ペインのカーソルを先頭に移動 ||
-||↓ ||カーソルを下に移動 ||隣ペインのカーソルを下に移動 ||隣ペインのカーソルを末尾に移動 ||
-||← ||親フォルダに移動/隣のペインに移動 ||
-||→ ||親フォルダに移動/隣のペインに移動 ||
+||↑ ||カーソルを上に移動 ||隣ペインのカーソルを上に移動 ||隣ペインのカーソルを先頭に移動 || || ||
+||↓ ||カーソルを下に移動 ||隣ペインのカーソルを下に移動 ||隣ペインのカーソルを末尾に移動 || || ||
+||← ||親フォルダに移動/隣のペインに移動 || || || || ||
+||→ ||親フォルダに移動/隣のペインに移動 || || || || ||
= テキストビュー
||キー ||装飾なし ||Shift ||Alt ||Ctrl(Command) ||覚え方 ||
||C ||ファイル名をクリップボードにコピー ||フルパスをクリップボードにコピー || ||選択範囲をクリップボードにコピー ||Copy ||
||BACKSPACE ||フォルダビューに戻る || || || || ||
||+ ||フォントサイズを大きく || || || || ||
||- ||フォントサイズを小さく || || || || ||
-||↑ ||カーソルを上に移動 ||隣ペインのカーソルを上に移動 ||隣ペインのカーソルを先頭に移動 ||
-||↓ ||カーソルを下に移動 ||隣ペインのカーソルを下に移動 ||隣ペインのカーソルを末尾に移動 ||
-||← ||PageUp ||
-||→ ||PageDown ||
+||↑ ||カーソルを上に移動 ||隣ペインのカーソルを上に移動 ||隣ペインのカーソルを先頭に移動 || || ||
+||↓ ||カーソルを下に移動 ||隣ペインのカーソルを下に移動 ||隣ペインのカーソルを末尾に移動 || || ||
+||← ||PageUp || || || || ||
+||→ ||PageDown || || || || ||
#include "simpleimageview.h"\r
#include "mainwindow.h"\r
#include "ui_mainwindow.h"\r
+#include "bookmarkdialog.h"\r
\r
#include <QCheckBox>\r
#include <QCloseEvent>\r
}\r
\r
QSettings settings;\r
+ // ブックマークメニューを初期化する\r
+ initBookmark();\r
+\r
// メニュー項目の状態を初期化する\r
ui->view_Hidden->setChecked(settings.value(IniKey_ShowHidden).toBool());\r
ui->view_System->setChecked(settings.value(IniKey_ShowSystem).toBool());\r
}\r
}\r
\r
-void MainWindow::itemFound()\r
-{\r
- qDebug() << "MainWindow::itemFound";\r
-\r
- SearchBox *box = sender()->parent()->findChild<SearchBox*>("searchBox");\r
- Q_CHECK_PTR(box);\r
-\r
- QPalette pal = box->palette();\r
- pal.setColor(QPalette::Text, QPalette().text().color());\r
- box->setPalette(pal);\r
-}\r
-\r
-void MainWindow::itemNotFound()\r
-{\r
- qDebug() << "MainWindow::itemNotFound";\r
-\r
- SearchBox *box = sender()->parent()->findChild<SearchBox*>("searchBox");\r
- Q_CHECK_PTR(box);\r
-\r
- QPalette pal = box->palette();\r
- pal.setColor(QPalette::Text, Qt::red);\r
- box->setPalette(pal);\r
-}\r
-\r
void MainWindow::markAll()\r
{\r
qDebug() << "MainWindow::markAll();";\r
}\r
}\r
\r
-void MainWindow::returnPressInSearchBox()\r
-{\r
- qDebug() << "MainWindow::returnPressInSearchBox";\r
-\r
- if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {\r
- emit ui->action_SearchPrev->triggered();\r
- }\r
- else {\r
- emit ui->action_SearchNext->triggered();\r
- }\r
-}\r
-\r
void MainWindow::showFileInfo(const QString &str)\r
{\r
qDebug() << "MainWindow::showFileInfo();" << str;\r
QLabel *label = ui->statusBar->findChild<QLabel*>("Right");\r
Q_CHECK_PTR(label);\r
\r
-// label->resize(QFontMetrics(label->font()).boundingRect(str).width(),\r
-// label->height());\r
label->setText(str);\r
}\r
\r
ui->splitter->setVisible(false);\r
\r
setViewMode(ModeFullView);\r
- // focusChangeでupdateActionsされるので不要\r
-// updateActions();\r
}\r
else {\r
ui->pane3->setVisible(false);\r
}\r
}\r
\r
+void MainWindow::openBookmark()\r
+{\r
+ qDebug() << "MainWindow::openBookmark();";\r
+\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ QAction *action = qobject_cast<QAction*>(sender());\r
+ Q_CHECK_PTR(action);\r
+\r
+ QSettings settings;\r
+ int i = action->data().toInt();\r
+ view->setPath(settings.value(IniKey_BookmarkEntryPath(i)).toString(), true);\r
+}\r
+\r
void MainWindow::refresh()\r
{\r
qDebug() << "MainWindow::refresh();";\r
settings.setValue(IniKey_AutoCloseRename, opDlg.autoClose());\r
}\r
\r
-void MainWindow::retrieveFinish()\r
+void MainWindow::shellExecute()\r
{\r
- qDebug() << "MainWindow::retrieveFinish();";\r
+ qDebug() << "MainWindow::shellExecute";\r
\r
- ui->statusBar->showMessage(tr("レディ"), 5000);\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
+\r
+ foreach (const QFileInfo &info, view->selectedItems()) {\r
+ QString path = QDir::toNativeSeparators(info.absoluteFilePath());\r
+ QDesktopServices::openUrl(QUrl("file:///" + path));\r
+ }\r
}\r
\r
-void MainWindow::retrieveStart(const QString &path)\r
+void MainWindow::showBookmarkDialog()\r
{\r
- qDebug() << "MainWindow::retrieveStart();" << path;\r
+ FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
+ Q_CHECK_PTR(view);\r
\r
- ui->statusBar->showMessage(tr("ファイルリストを取得しています..."));\r
+ BookmarkDialog dlg(this);\r
+ dlg.setEditMode(false);\r
+ if (dlg.exec() == QDialog::Accepted) {\r
+ int n = dlg.selectedIndex();\r
+\r
+ QSettings settings;\r
+ view->setPath(settings.value(IniKey_BookmarkEntryPath(n)).toString(), true);\r
+ }\r
}\r
\r
-void MainWindow::shellExecute()\r
+void MainWindow::editBookmark()\r
{\r
- qDebug() << "MainWindow::shellExecute";\r
+ qDebug() << "MainWindow::showBookmarkDialog();";\r
\r
- FolderView *view = static_cast<FolderView*>(qApp->focusWidget());\r
- Q_CHECK_PTR(view);\r
+ BookmarkDialog dlg(this);\r
+ dlg.setEditMode(true);\r
\r
- foreach (const QFileInfo &info, view->selectedItems()) {\r
- QString path = QDir::toNativeSeparators(info.absoluteFilePath());\r
- QDesktopServices::openUrl(QUrl("file:///" + path));\r
+ if (dlg.exec() == QDialog::Accepted) {\r
+ initBookmark();\r
}\r
}\r
\r
updateActions();\r
}\r
\r
-void MainWindow::searchItem(const QString &text)\r
-{\r
- qDebug() << "MainWindow::searchItem" << text;\r
+//void MainWindow::searchItem(const QString &text)\r
+//{\r
+// qDebug() << "MainWindow::searchItem" << text;\r
\r
- SearchBox *box = qobject_cast<SearchBox*>(qApp->focusWidget());\r
- Q_CHECK_PTR(box);\r
+// SearchBox *box = qobject_cast<SearchBox*>(qApp->focusWidget());\r
+// Q_CHECK_PTR(box);\r
\r
- if (text.right(1) == "/") {\r
- // '/'が入力されたら、検索終了\r
- box->setText(text.left(text.length() - 1));\r
- ui->action_Search->setChecked(false);\r
- }\r
- else {\r
- FolderPanel *fp = qobject_cast<FolderPanel*>(box->parent());\r
- Q_CHECK_PTR(fp);\r
+// if (text.right(1) == "/") {\r
+// // '/'が入力されたら、検索終了\r
+// box->setText(text.left(text.length() - 1));\r
+// ui->action_Search->setChecked(false);\r
+// }\r
+// else {\r
+// FolderPanel *fp = qobject_cast<FolderPanel*>(box->parent());\r
+// Q_CHECK_PTR(fp);\r
\r
- fp->folderView()->searchItem(box->text());\r
- }\r
-}\r
+// fp->folderView()->searchItem(box->text());\r
+// }\r
+//}\r
\r
void MainWindow::searchNext()\r
{\r
}\r
}\r
\r
+void MainWindow::initBookmark()\r
+{\r
+ QSettings settings;\r
+ QFileIconProvider iconProvider;\r
+\r
+ ui->menu_Bookmark->clear();\r
+ ui->menu_Bookmark->addAction(ui->bookmark_Edit);\r
+ ui->menu_Bookmark->addSeparator();\r
+ int i = 0;\r
+ while (!settings.value(IniKey_BookmarkEntryName(i), "").toString().isEmpty()) {\r
+ QString path = settings.value(IniKey_BookmarkEntryPath(i)).toString();\r
+ QAction *action = new QAction(this);\r
+ action->setText(settings.value(IniKey_BookmarkEntryName(i)).toString());\r
+ action->setData(i);\r
+ action->setIcon(iconProvider.icon(QFileInfo(path)));\r
+ ui->menu_Bookmark->addAction(action);\r
+ connect(action, SIGNAL(triggered()), this, SLOT(openBookmark()));\r
+ i++;\r
+ }\r
+}\r
+\r
void MainWindow::setPathFromOther()\r
{\r
qDebug() << "MainWindow::setPathFromOther();";\r
menu.addAction(ui->action_OpenEditor);\r
menu.addAction(ui->action_OpenTerminal);\r
menu.addSeparator();\r
+ menu.addAction(ui->cmd_Copy);\r
+ menu.addAction(ui->cmd_Move);\r
+ menu.addSeparator();\r
+ menu.addAction(ui->cmd_Delete);\r
+ menu.addSeparator();\r
menu.addAction(ui->copy_Filename);\r
menu.addAction(ui->copy_Fullpath);\r
+ menu.addSeparator();\r
+ menu.addAction(ui->cmd_Rename);\r
}\r
else {\r
menu.addAction(ui->move_Back);\r
menu.addAction(ui->move_Home);\r
menu.addAction(ui->move_Root);\r
menu.addAction(ui->move_Jump);\r
+ menu.addSeparator();\r
+ menu.addAction(ui->cmd_NewFile);\r
+ menu.addAction(ui->cmd_NewFolder);\r
}\r
\r
menu.exec(event->globalPos());\r
connect(ui->view_Swap, SIGNAL(triggered()), this, SLOT(swapView()));\r
connect(ui->view_System, SIGNAL(toggled(bool)), this, SLOT(toggleShowSystemFiles(bool)));\r
connect(ui->view_ToOther, SIGNAL(triggered()), this, SLOT(setPathToOther()));\r
+ connect(ui->bookmark_Edit, SIGNAL(triggered()), this, SLOT(editBookmark()));\r
+ connect(ui->bookmark_Show, SIGNAL(triggered()), this, SLOT(showBookmarkDialog()));\r
}\r
\r
void MainWindow::replaceVars(QString &str, const QFileInfo info)\r
void focusChange(QWidget * old, QWidget * now);\r
void leftKeyPress();\r
void rightKeyPress();\r
- void returnPressInSearchBox();\r
void showFileInfo(const QString &str);\r
\r
void about();\r
void cursorDown();\r
void cursorUp();\r
void deleteItems();\r
+ void editBookmark();\r
void executeCommand();\r
void historyBack();\r
void historyForward();\r
- void itemFound();\r
- void itemNotFound();\r
void markAll();\r
void markAllFiles();\r
void markAllOff();\r
void open(const QModelIndex &index = QModelIndex());\r
void openEditor(const QString &path = QString());\r
void openTerminal();\r
+ void openBookmark();\r
void refresh();\r
void renameItems();\r
- void retrieveFinish();\r
- void retrieveStart(const QString &path);\r
- void searchItem(const QString& text);\r
void searchNext();\r
void searchPrev();\r
void setCursorToBegin();\r
void setPathToParent();\r
void setPathToRoot();\r
void shellExecute();\r
+ void showBookmarkDialog();\r
void showFilterDialog();\r
void showHistoryDialog();\r
void showPreferenceDialog();\r
void showNameFilters(FolderView *view);\r
void copyItems(const QFileInfoList &list, const QString &tgtDir);\r
void changeFontSize(int diff);\r
+ void initBookmark();\r
\r
// getter\r
FolderView* otherSideFolderView(const FolderView *view) const;\r
<addaction name="check_Update"/>\r
<addaction name="help_About"/>\r
</widget>\r
+ <widget class="QMenu" name="menu_Bookmark">\r
+ <property name="title">\r
+ <string>ブックマーク</string>\r
+ </property>\r
+ <addaction name="bookmark_Edit"/>\r
+ <addaction name="separator"/>\r
+ </widget>\r
<addaction name="menu_File"/>\r
<addaction name="menu_Mark"/>\r
<addaction name="menu_View"/>\r
<addaction name="menu_Move"/>\r
+ <addaction name="menu_Bookmark"/>\r
<addaction name="menu_Operate"/>\r
<addaction name="menu_Help"/>\r
</widget>\r
<string>P</string>\r
</property>\r
</action>\r
+ <action name="bookmark_Edit">\r
+ <property name="text">\r
+ <string>ブックマークを編集...</string>\r
+ </property>\r
+ <property name="toolTip">\r
+ <string>ブックマークを編集...</string>\r
+ </property>\r
+ <property name="shortcut">\r
+ <string>Shift+B</string>\r
+ </property>\r
+ </action>\r
+ <action name="bookmark_Show">\r
+ <property name="text">\r
+ <string>ブックマークを表示</string>\r
+ </property>\r
+ <property name="shortcut">\r
+ <string>B</string>\r
+ </property>\r
+ </action>\r
</widget>\r
<layoutdefault spacing="6" margin="11"/>\r
<customwidgets>\r
#ifndef VERSION_H
#define VERSION_H
-#define VERSION_VALUE 0.16
+#define VERSION_VALUE 0.17
#endif // VERSION_H