deleteworker.cpp \\r
overwritedialog.cpp \\r
copymoveworker.cpp \\r
- filetablewidget.cpp\r
+ filetablewidget.cpp \\r
+ sortdialog.cpp\r
\r
HEADERS += mainwindow.h \\r
folderpanel.h \\r
deleteworker.h \\r
overwritedialog.h \\r
copymoveworker.h \\r
- filetablewidget.h\r
+ filetablewidget.h \\r
+ sortdialog.h\r
\r
FORMS += mainwindow.ui \\r
folderpanel.ui \\r
renamesingledialog.ui \\r
renamemultidialog.ui \\r
operationdialog.ui \\r
- overwritedialog.ui\r
+ overwritedialog.ui \\r
+ sortdialog.ui\r
\r
RESOURCES += \\r
resource.qrc\r
Gefu is Experimental File Utility.
-#### 2014.08.XX Ver0.01
+### TODO
+- フォルダ履歴
+- 環境設定ダイアログ
+- QTableWidget -> QTableView + Modelへの変更(速くなるかな?)
+- 高速化(Win32 APIの使用も考慮)
+
+#### 2014.08.18 Ver0.01 作業中
- 名前変更ダイアログ(単一)のレイアウトを修正。
- すべて選択等で、カーソル位置が変わらないようにした。
- マークしているフォルダ数、ファイル数、合計ファイルサイズの表示を追加。
- ファイルサイズを小数点第一位まで表示するようにした。
+- システム属性ファイルの表示/非表示機能を追加。
+- 名前ソートで大文字小文字を区別しないようにした。
+- ソート方法の選択機能を追加。
-#### 2014.08.18 Ver0.00
-- 新規公開
+#### 2014.08.18 Ver0.00 公開
+- 新規
#define VERSION_STRING "0.01"\r
#define VERSION_VALUE 0.01\r
\r
+#define slash QString("/")\r
+\r
+#define IniKey_ShowHidden "Common/ShowHidden"\r
+#define IniKey_ShowSystem "Common/ShowSystem"\r
+#define IniSec_Left "Left"\r
+#define IniSec_Right "Right"\r
+#define IniKey_Dir "dir"\r
+#define IniKey_SortBy "SortBy"\r
+#define IniKey_OrderBy "OrderBy"\r
+#define IniKey_PutDirs "PutDirs"\r
+#define IniKey_IgnoreCase "IgnoreCase"\r
+#define IniKey_LeftDir IniSec_Left"/"IniKey_Dir\r
+#define IniKey_LeftSortBy IniSec_Left"/"IniKey_SortBy\r
+#define IniKey_LeftOrderBy IniSec_Left"/"IniKey_OrderBy\r
+#define IniKey_LeftPutDirs IniSec_Left"/"IniKey_PutDirs\r
+#define IniKey_LeftIgnoreCase IniSec_Left"/"IniKey_IgnoreCase\r
+#define IniKey_RightDir IniSec_Right"/"IniKey_Dir\r
+#define IniKey_RightSortBy IniSec_Right"/"IniKey_SortBy\r
+#define IniKey_RightOrderBy IniSec_Right"/"IniKey_OrderBy\r
+#define IniKey_RightPutDirs IniSec_Right"/"IniKey_PutDirs\r
+#define IniKey_RightIgnoreCase IniSec_Right"/"IniKey_IgnoreCase\r
+\r
+#define SortByName QDir::Name\r
+#define SortByDate QDir::Time\r
+#define SortBySize QDir::Size\r
+#define SortByType QDir::Type\r
+\r
+#define OrderByAsc 0\r
+#define OrderByDesc QDir::Reversed\r
+\r
+#define PutDirsFirst QDir::DirsFirst\r
+#define PutDirsLast QDir::DirsLast\r
+#define PutDirsDefault 0\r
+\r
+\r
#endif // COMMON_H\r
}\r
break;\r
\r
+ case Qt::Key_S:\r
+ // S ソート方法を選択\r
+ // Shift + S システムファイルを表示/非表示\r
+ if (event->modifiers() == Qt::NoModifier) {\r
+ getMainWnd()->onViewSort();\r
+ accepted = true;\r
+ }\r
+ else if (event->modifiers() == Qt::ShiftModifier) {\r
+ getMainWnd()->onViewSystem();\r
+ accepted = true;\r
+ }\r
+ break;\r
+\r
case Qt::Key_U:\r
// U すべてのマークを解除\r
if (event->modifiers() == Qt::NoModifier) {\r
#include <QDebug>\r
#include <QDateTime>\r
#include <QDesktopServices>\r
+#include <QSettings>\r
+#ifdef Q_OS_WIN32\r
+ #include <windows.h>\r
+#endif\r
\r
QString FilesizeToString(quint64 size)\r
{\r
header->setSectionResizeMode(2, QHeaderView::ResizeToContents);\r
header->setSectionResizeMode(3, QHeaderView::ResizeToContents);\r
\r
- // フォルダの要素を表示\r
- m_dir.setFilter(QDir::NoDot | QDir::AllEntries);\r
- m_dir.setSorting(QDir::DirsFirst | QDir::Name);\r
+ QSettings settings;\r
+ // フィルタ初期化\r
+ m_dir.setFilter(QDir::NoDot | QDir::AllDirs | QDir::Files);\r
+ if (settings.value(IniKey_ShowHidden, false).toBool()) {\r
+ m_dir.setFilter(m_dir.filter() | QDir::Hidden);\r
+ }\r
+ if (settings.value(IniKey_ShowSystem, false).toBool()) {\r
+ m_dir.setFilter(m_dir.filter() | QDir::System);\r
+ }\r
+\r
+ // ソート順初期化\r
+ m_dir.setSorting(QDir::DirsFirst | QDir::IgnoreCase);\r
}\r
\r
FolderPanel::~FolderPanel()\r
\r
void FolderPanel::setCurrentFolder(const QString &path)\r
{\r
+ QSettings settings;\r
+\r
getMainWnd()->setStatusText(tr("ファイルリストを更新中..."));\r
QString curDir = m_dir.absolutePath();\r
m_dir.setPath(QDir::cleanPath(path));\r
m_dir.canonicalPath();\r
+\r
QFileInfoList list = m_dir.entryInfoList();\r
\r
if (list.empty()) {\r
// フォルダの変更監視\r
InstallWatcher();\r
\r
+ // QtはWindowsのシステムファイル属性をうまく判定できていないため、\r
+ // GetFileAttributes APIを使ってフィルタする\r
+ bool showSystem;\r
+ showSystem = settings.value(IniKey_ShowSystem, false).toBool();\r
+\r
beginUpdate();\r
ui->fileTable->model()->removeRows(0, ui->fileTable->rowCount());\r
for (int i = 0; i < list.size(); i++) {\r
continue;\r
}\r
\r
+#ifdef Q_OS_WIN32\r
+ DWORD dwFlags = ::GetFileAttributes(info.absoluteFilePath().toStdWString().c_str());\r
+ if (!showSystem && dwFlags != DWORD(-1) && (dwFlags & FILE_ATTRIBUTE_SYSTEM)) {\r
+ continue;\r
+ }\r
+#endif\r
+\r
int row = ui->fileTable->rowCount();\r
ui->fileTable->insertRow(row);\r
\r
else {\r
str = FilesizeToString(info.size());\r
}\r
-#if 0\r
- else if (info.size() >= 1024 * 1024 * 1024) {\r
- str = tr("%1GB").arg(int(info.size() / (1024 * 1024 * 1024)));\r
- }\r
- else if (info.size() >= 1024 * 1024) {\r
- str = tr("%1MB").arg(int(info.size() / (1024 * 1024)));\r
- }\r
- else if (info.size() >= 1024) {\r
- str = tr("%1KB").arg(int(info.size() / 1024));\r
- }\r
- else {\r
- str = tr("%1B").arg(info.size());\r
- }\r
-#endif\r
QTableWidgetItem *iSize = new QTableWidgetItem(str);\r
iSize->setFlags(iSize->flags() ^ Qt::ItemIsEditable);\r
iSize->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);\r
-\r
ui->fileTable->setItem(row, 2, iSize);\r
\r
// 最終更新日時\r
void InstallWatcher();\r
void UninstallWatcher();\r
\r
- void beginUpdate() { m_bUpdating = true; }\r
- void endUpdate() { m_bUpdating = false; onUpdateMark(0, 0);}\r
+ void beginUpdate() {\r
+ m_bUpdating = true;\r
+// setUpdatesEnabled(false);\r
+ }\r
+ void endUpdate() {\r
+ m_bUpdating = false;\r
+// setUpdatesEnabled(true);\r
+ onUpdateMark(0, 0);\r
+ }\r
bool isUpdating() const { return m_bUpdating; }\r
\r
private:\r
#include "renamemultidialog.h"\r
#include "renamesingledialog.h"\r
#include "renameworker.h"\r
+#include "sortdialog.h"\r
#include "ui_mainwindow.h"\r
#include <QFileSystemModel>\r
#include <QDebug>\r
ui->setupUi(this);\r
\r
QSettings settings;\r
- bool checked = settings.value("Common/ShowHidden", false).toBool();\r
- ui->view_Hidden->setChecked(checked);\r
+ if (settings.value(IniKey_ShowHidden, false).toBool()) {\r
+ ui->view_Hidden->setChecked(true);\r
+ }\r
+ if (settings.value(IniKey_ShowSystem, false).toBool()) {\r
+ ui->view_System->setChecked(true);\r
+ }\r
\r
// メニューのシグナル/スロットを設定する\r
connect(ui->action_Command, SIGNAL(triggered()), this, SLOT(onActionCommand()));\r
connect(ui->view_FromOther, SIGNAL(triggered()), this, SLOT(onViewFromOther()));\r
connect(ui->view_ToOther, SIGNAL(triggered()), this, SLOT(onViewToOther()));\r
connect(ui->view_Hidden, SIGNAL(triggered()), this, SLOT(onViewHidden()));\r
+ connect(ui->view_Sort, SIGNAL(triggered()), this, SLOT(onViewSort()));\r
connect(ui->view_Swap, SIGNAL(triggered()), this, SLOT(onViewSwap()));\r
+ connect(ui->view_System, SIGNAL(triggered()), this, SLOT(onViewSystem()));\r
\r
connect(ui->cmd_Copy, SIGNAL(triggered()), this, SLOT(onCmdCopy()));\r
connect(ui->cmd_Delete, SIGNAL(triggered()), this, SLOT(onCmdDelete()));\r
connect(ui->help_About, SIGNAL(triggered()), this, SLOT(onHelpAbout()));\r
\r
// ウィンドウタイトルを設定する\r
- setWindowTitle(tr("げふぅ v0.00"));\r
+ setWindowTitle(tr("げふぅ v%1").arg(VERSION_VALUE));\r
// ウィンドウアイコンを設定する\r
setWindowIcon(QIcon(":/images/Gefu.png"));\r
\r
// ウィンドウ初期サイズを設定する\r
resize(800, 600);\r
\r
+\r
+ int sortBy, orderBy;\r
+ // 左ペインのソート初期値\r
+ QDir *dir;\r
+ dir = ui->folderPanel_L->dir();\r
+ dir->setSorting(QDir::Name); // 0\r
+\r
+ sortBy = settings.value(IniKey_LeftSortBy, SortByName).toInt();\r
+ switch (sortBy) {\r
+ case SortByDate: dir->setSorting(dir->sorting() | QDir::Time); break;\r
+ case SortBySize: dir->setSorting(dir->sorting() | QDir::Size); break;\r
+ case SortByType: dir->setSorting(dir->sorting() | QDir::Type); break;\r
+ default: dir->setSorting(dir->sorting() | QDir::Name); break;\r
+ }\r
+\r
+ // デフォルトだと文字列は昇順で、数値は降順…orz\r
+ orderBy = settings.value(IniKey_LeftOrderBy, OrderByDesc).toInt();\r
+ if (((sortBy == SortByName || sortBy == SortByType) && orderBy == OrderByDesc) ||\r
+ ((sortBy == SortByDate || sortBy == SortBySize) && orderBy == OrderByAsc))\r
+ {\r
+ dir->setSorting(dir->sorting() | QDir::Reversed);\r
+ }\r
+\r
+ switch (settings.value(IniKey_LeftPutDirs, PutDirsFirst).toInt()) {\r
+ case PutDirsFirst: dir->setSorting(dir->sorting() | QDir::DirsFirst); break;\r
+ case PutDirsLast: dir->setSorting(dir->sorting() | QDir::DirsLast); break;\r
+ }\r
+\r
+ if (settings.value(IniKey_LeftIgnoreCase, true).toBool()) {\r
+ dir->setSorting(dir->sorting() | QDir::IgnoreCase);\r
+ }\r
+\r
+ // 右ペインのソート初期値\r
+ dir = ui->folderPanel_R->dir();\r
+ dir->setSorting(QDir::Name); // 0\r
+\r
+ sortBy = settings.value(IniKey_RightSortBy, SortByName).toInt();\r
+ switch (sortBy) {\r
+ case SortByDate: dir->setSorting(dir->sorting() | QDir::Time); break;\r
+ case SortBySize: dir->setSorting(dir->sorting() | QDir::Size); break;\r
+ case SortByType: dir->setSorting(dir->sorting() | QDir::Type); break;\r
+ default: dir->setSorting(dir->sorting() | QDir::Name); break;\r
+ }\r
+\r
+ // デフォルトだと文字列は昇順で、数値は降順…orz\r
+ orderBy = settings.value(IniKey_RightOrderBy, OrderByDesc).toInt();\r
+ if (((sortBy == SortByName || sortBy == SortByType) && orderBy == OrderByDesc) ||\r
+ ((sortBy == SortByDate || sortBy == SortBySize) && orderBy == OrderByAsc))\r
+ {\r
+ dir->setSorting(dir->sorting() | QDir::Reversed);\r
+ }\r
+\r
+ switch (settings.value(IniKey_RightPutDirs, PutDirsFirst).toInt()) {\r
+ case PutDirsFirst: dir->setSorting(dir->sorting() | QDir::DirsFirst); break;\r
+ case PutDirsLast: dir->setSorting(dir->sorting() | QDir::DirsLast); break;\r
+ }\r
+\r
+ if (settings.value(IniKey_RightIgnoreCase, true).toBool()) {\r
+ dir->setSorting(dir->sorting() | QDir::IgnoreCase);\r
+ }\r
+\r
QString path;\r
\r
- path = settings.value("Left/dir", QDir::homePath()).toString();\r
+ path = settings.value(IniKey_LeftDir, QDir::homePath()).toString();\r
ui->folderPanel_L->setCurrentFolder(path);\r
\r
- path = settings.value("Right/dir", QDir::homePath()).toString();\r
+ path = settings.value(IniKey_RightDir, QDir::homePath()).toString();\r
ui->folderPanel_R->setCurrentFolder(path);\r
}\r
\r
{\r
QSettings settings;\r
\r
- settings.setValue("Left/dir", ui->folderPanel_L->dir()->absolutePath());\r
- settings.setValue("Right/dir", ui->folderPanel_R->dir()->absolutePath());\r
+ settings.setValue(IniKey_LeftDir, ui->folderPanel_L->dir()->absolutePath());\r
+ settings.setValue(IniKey_RightDir, ui->folderPanel_R->dir()->absolutePath());\r
\r
delete ui;\r
}\r
/// \brief MainWindow::onViewHidden\r
///\r
/// 隠しファイルの表示/非表示を切り替えます(Shift + H)\r
+///\r
void MainWindow::onViewHidden()\r
{\r
QSettings settings;\r
- bool checked = !settings.value("Common/ShowHidden", false).toBool();\r
- settings.setValue("Common/ShowHidden", checked);\r
-\r
+ bool checked = !settings.value(IniKey_ShowHidden, false).toBool();\r
+ settings.setValue(IniKey_ShowHidden, checked);\r
+ ui->view_Hidden->setChecked(checked);\r
+#if 1\r
if (checked) {\r
ui->folderPanel_L->dir()->setFilter(ui->folderPanel_L->dir()->filter() | QDir::Hidden);\r
ui->folderPanel_R->dir()->setFilter(ui->folderPanel_R->dir()->filter() | QDir::Hidden);\r
ui->folderPanel_L->dir()->setFilter(ui->folderPanel_L->dir()->filter() ^ QDir::Hidden);\r
ui->folderPanel_R->dir()->setFilter(ui->folderPanel_R->dir()->filter() ^ QDir::Hidden);\r
}\r
-\r
+#endif\r
ui->folderPanel_L->setCurrentFolder(ui->folderPanel_L->dir()->absolutePath());\r
ui->folderPanel_R->setCurrentFolder(ui->folderPanel_R->dir()->absolutePath());\r
}\r
\r
+void MainWindow::onViewSort()\r
+{\r
+ FolderPanel *fp = activePanel();\r
+ if (!fp) {\r
+ return;\r
+ }\r
+\r
+ QString iniSec;\r
+ SortDialog dlg(this);\r
+ if (fp == ui->folderPanel_L) {\r
+ iniSec = IniSec_Left;\r
+ }\r
+ else {\r
+ iniSec = IniSec_Right;\r
+ }\r
+\r
+ dlg.setRightOrLeft(iniSec);\r
+ if (dlg.exec() == QDialog::Accepted) {\r
+ QSettings settings;\r
+ QDir *dir = fp->dir();\r
+ dir->setSorting(QDir::Name); // 0\r
+\r
+ int sortBy = settings.value(iniSec + slash + IniKey_SortBy, 0).toInt();\r
+ switch (sortBy) {\r
+ case SortByDate: dir->setSorting(dir->sorting() | QDir::Time); break;\r
+ case SortBySize: dir->setSorting(dir->sorting() | QDir::Size); break;\r
+ case SortByType: dir->setSorting(dir->sorting() | QDir::Type); break;\r
+ default: dir->setSorting(dir->sorting() | QDir::Name); break;\r
+ }\r
+\r
+ // デフォルトだと文字列は昇順で、数値は降順…orz\r
+ int orderBy = settings.value(iniSec + slash + IniKey_OrderBy, 0).toInt();\r
+ if (((sortBy == SortByName || sortBy == SortByType) && orderBy == OrderByDesc) ||\r
+ ((sortBy == SortByDate || sortBy == SortBySize) && orderBy == OrderByAsc))\r
+ {\r
+ dir->setSorting(dir->sorting() | QDir::Reversed);\r
+ }\r
+\r
+ switch (settings.value(iniSec + slash + IniKey_PutDirs, 0).toInt()) {\r
+ case PutDirsFirst: dir->setSorting(dir->sorting() | QDir::DirsFirst); break;\r
+ case PutDirsLast: dir->setSorting(dir->sorting() | QDir::DirsLast); break;\r
+ }\r
+\r
+ if (settings.value(iniSec + slash + IniKey_IgnoreCase, true).toBool()) {\r
+ dir->setSorting(dir->sorting() | QDir::IgnoreCase);\r
+ }\r
+\r
+ fp->setCurrentFolder(fp->dir()->absolutePath());\r
+ }\r
+}\r
+\r
///\r
/// \brief MainWindow::onViewSwap\r
///\r
}\r
\r
///\r
+/// \brief MainWindow::onViewSystem\r
+///\r
+/// システムファイルの表示/非表示を切り替えます(Shift + H)\r
+///\r
+void MainWindow::onViewSystem()\r
+{\r
+ QSettings settings;\r
+ bool checked = !settings.value(IniKey_ShowSystem, false).toBool();\r
+ settings.setValue(IniKey_ShowSystem, checked);\r
+ ui->view_System->setChecked(checked);\r
+#if 1\r
+ QDir *dirs[2];\r
+ dirs[0] = ui->folderPanel_L->dir();\r
+ dirs[1] = ui->folderPanel_R->dir();\r
+ for (int n = 0; n < 2; n++) {\r
+ if (checked) {\r
+ dirs[n]->setFilter(dirs[n]->filter() | QDir::System);\r
+ }\r
+ else {\r
+ dirs[n]->setFilter(dirs[n]->filter() ^ QDir::System);\r
+ }\r
+ }\r
+#endif\r
+ ui->folderPanel_L->setCurrentFolder(ui->folderPanel_L->dir()->absolutePath());\r
+ ui->folderPanel_R->setCurrentFolder(ui->folderPanel_R->dir()->absolutePath());\r
+}\r
+\r
+///\r
/// \brief MainWindow::onCmdMove\r
///\r
/// ファイルを移動します(Ctrl + M)\r
void onViewFromOther();\r
void onViewToOther();\r
void onViewHidden();\r
+ void onViewSort();\r
void onViewSwap();\r
+ void onViewSystem();\r
\r
void onCmdMove();\r
void onCmdCopy();\r
<addaction name="view_Swap"/>\r
<addaction name="separator"/>\r
<addaction name="view_Hidden"/>\r
+ <addaction name="view_System"/>\r
+ <addaction name="separator"/>\r
<addaction name="view_Sort"/>\r
</widget>\r
<widget class="QMenu" name="menu_Move">\r
<enum>QAction::AboutRole</enum>\r
</property>\r
</action>\r
+ <action name="view_System">\r
+ <property name="checkable">\r
+ <bool>true</bool>\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>Shift+S</string>\r
+ </property>\r
+ </action>\r
</widget>\r
<layoutdefault spacing="6" margin="11"/>\r
<customwidgets>\r
--- /dev/null
+#include "common.h"\r
+#include "sortdialog.h"\r
+#include "ui_sortdialog.h"\r
+#include <QSettings>\r
+#include <QDir>\r
+\r
+SortDialog::SortDialog(QWidget *parent) :\r
+ QDialog(parent),\r
+ ui(new Ui::SortDialog),\r
+ m_RightOrLeft()\r
+{\r
+ ui->setupUi(this);\r
+}\r
+\r
+SortDialog::~SortDialog()\r
+{\r
+ delete ui;\r
+}\r
+\r
+void SortDialog::setRightOrLeft(const QString &s)\r
+{\r
+ QSettings settings;\r
+\r
+ m_RightOrLeft = s;\r
+ int sortBy = settings.value(\r
+ m_RightOrLeft + slash + IniKey_SortBy,\r
+ SortByName).toInt();\r
+ if (sortBy == SortByType) {\r
+ ui->sortByType->setChecked(true);\r
+ }\r
+ else if (sortBy == SortBySize) {\r
+ ui->sortBySize->setChecked(true);\r
+ }\r
+ else if (sortBy == SortByDate) {\r
+ ui->sortByDate->setChecked(true);\r
+ }\r
+ else {\r
+ ui->sortByName->setChecked(true);\r
+ }\r
+\r
+ int orderBy = settings.value(\r
+ m_RightOrLeft + slash + IniKey_OrderBy,\r
+ OrderByAsc).toInt();\r
+ if (orderBy == OrderByDesc) {\r
+ ui->orderDesc->setChecked(true);\r
+ }\r
+ else {\r
+ ui->orderAsc->setChecked(true);\r
+ }\r
+\r
+ int putDirs = settings.value(\r
+ m_RightOrLeft + slash + IniKey_PutDirs,\r
+ PutDirsFirst).toInt();\r
+ if (putDirs == PutDirsDefault) {\r
+ ui->dirsDefault->setChecked(true);\r
+ }\r
+ else if (putDirs == PutDirsLast) {\r
+ ui->dirsLast->setChecked(true);\r
+ }\r
+ else {\r
+ ui->dirsFirst->setChecked(true);\r
+ }\r
+\r
+ bool ignoreCase = settings.value(\r
+ m_RightOrLeft + slash + IniKey_IgnoreCase, true).toBool();\r
+ ui->ignoreCase->setChecked(ignoreCase);\r
+}\r
+\r
+void SortDialog::accept()\r
+{\r
+ QSettings settings;\r
+\r
+ QString key = m_RightOrLeft + slash + IniKey_SortBy;\r
+ if (ui->sortByDate->isChecked()) {\r
+ settings.setValue(key, SortByDate);\r
+ }\r
+ else if (ui->sortByName->isChecked()) {\r
+ settings.setValue(key, SortByName);\r
+ }\r
+ else if (ui->sortBySize->isChecked()) {\r
+ settings.setValue(key, SortBySize);\r
+ }\r
+ else {\r
+ settings.setValue(key, SortByType);\r
+ }\r
+\r
+ key = m_RightOrLeft + slash + IniKey_OrderBy;\r
+ if (ui->orderAsc->isChecked()) {\r
+ settings.setValue(key, OrderByAsc);\r
+ }\r
+ else {\r
+ settings.setValue(key, OrderByDesc);\r
+ }\r
+\r
+ key = m_RightOrLeft + slash + IniKey_PutDirs;\r
+ if (ui->dirsDefault->isChecked()) {\r
+ settings.setValue(key, PutDirsDefault);\r
+ }\r
+ else if (ui->dirsFirst->isChecked()) {\r
+ settings.setValue(key, PutDirsFirst);\r
+ }\r
+ else {\r
+ settings.setValue(key, PutDirsLast);\r
+ }\r
+\r
+ key = m_RightOrLeft + slash + IniKey_IgnoreCase;\r
+ settings.setValue(key, ui->ignoreCase->isChecked());\r
+\r
+ QDialog::accept();\r
+}\r
--- /dev/null
+#ifndef SORTDIALOG_H\r
+#define SORTDIALOG_H\r
+\r
+#include <QDialog>\r
+\r
+namespace Ui {\r
+class SortDialog;\r
+}\r
+\r
+class SortDialog : public QDialog\r
+{\r
+ Q_OBJECT\r
+\r
+public:\r
+ explicit SortDialog(QWidget *parent = 0);\r
+ ~SortDialog();\r
+\r
+ void setRightOrLeft(const QString &s);\r
+\r
+protected:\r
+ void accept();\r
+\r
+private:\r
+ Ui::SortDialog *ui;\r
+ QString m_RightOrLeft;\r
+};\r
+\r
+#endif // SORTDIALOG_H\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>SortDialog</class>\r
+ <widget class="QDialog" name="SortDialog">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>273</width>\r
+ <height>185</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>ソート方法を選択</string>\r
+ </property>\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <item row="0" column="0">\r
+ <layout class="QVBoxLayout" name="verticalLayout">\r
+ <item>\r
+ <widget class="QRadioButton" name="sortByName">\r
+ <property name="text">\r
+ <string>名前順</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QRadioButton" name="sortByDate">\r
+ <property name="text">\r
+ <string>更新日時順</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QRadioButton" name="sortBySize">\r
+ <property name="text">\r
+ <string>サイズ順</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QRadioButton" name="sortByType">\r
+ <property name="text">\r
+ <string>拡張子順</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item row="0" column="1">\r
+ <layout class="QVBoxLayout" name="verticalLayout_2">\r
+ <item>\r
+ <widget class="QRadioButton" name="orderAsc">\r
+ <property name="text">\r
+ <string>昇順</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup_2</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QRadioButton" name="orderDesc">\r
+ <property name="text">\r
+ <string>降順</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup_2</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <spacer name="verticalSpacer">\r
+ <property name="orientation">\r
+ <enum>Qt::Vertical</enum>\r
+ </property>\r
+ <property name="sizeHint" stdset="0">\r
+ <size>\r
+ <width>20</width>\r
+ <height>40</height>\r
+ </size>\r
+ </property>\r
+ </spacer>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item row="1" column="0" colspan="2">\r
+ <layout class="QHBoxLayout" name="horizontalLayout">\r
+ <item>\r
+ <widget class="QLabel" name="label">\r
+ <property name="text">\r
+ <string>フォルダの位置:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QRadioButton" name="dirsFirst">\r
+ <property name="text">\r
+ <string>先頭</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup_3</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QRadioButton" name="dirsLast">\r
+ <property name="text">\r
+ <string>最後</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup_3</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QRadioButton" name="dirsDefault">\r
+ <property name="text">\r
+ <string>優先なし</string>\r
+ </property>\r
+ <attribute name="buttonGroup">\r
+ <string notr="true">buttonGroup_3</string>\r
+ </attribute>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item row="2" column="0" colspan="2">\r
+ <layout class="QHBoxLayout" name="horizontalLayout_2">\r
+ <item>\r
+ <widget class="QLabel" name="label_2">\r
+ <property name="text">\r
+ <string>大文字・小文字:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QCheckBox" name="ignoreCase">\r
+ <property name="text">\r
+ <string>区別しない</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <spacer name="horizontalSpacer">\r
+ <property name="orientation">\r
+ <enum>Qt::Horizontal</enum>\r
+ </property>\r
+ <property name="sizeHint" stdset="0">\r
+ <size>\r
+ <width>40</width>\r
+ <height>20</height>\r
+ </size>\r
+ </property>\r
+ </spacer>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item row="3" column="0" colspan="2">\r
+ <widget class="QDialogButtonBox" name="buttonBox">\r
+ <property name="orientation">\r
+ <enum>Qt::Horizontal</enum>\r
+ </property>\r
+ <property name="standardButtons">\r
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ <tabstops>\r
+ <tabstop>sortByName</tabstop>\r
+ <tabstop>sortByDate</tabstop>\r
+ <tabstop>sortBySize</tabstop>\r
+ <tabstop>sortByType</tabstop>\r
+ <tabstop>orderAsc</tabstop>\r
+ <tabstop>orderDesc</tabstop>\r
+ <tabstop>dirsFirst</tabstop>\r
+ <tabstop>dirsLast</tabstop>\r
+ <tabstop>dirsDefault</tabstop>\r
+ <tabstop>ignoreCase</tabstop>\r
+ </tabstops>\r
+ <resources/>\r
+ <connections>\r
+ <connection>\r
+ <sender>buttonBox</sender>\r
+ <signal>accepted()</signal>\r
+ <receiver>SortDialog</receiver>\r
+ <slot>accept()</slot>\r
+ <hints>\r
+ <hint type="sourcelabel">\r
+ <x>248</x>\r
+ <y>254</y>\r
+ </hint>\r
+ <hint type="destinationlabel">\r
+ <x>157</x>\r
+ <y>274</y>\r
+ </hint>\r
+ </hints>\r
+ </connection>\r
+ <connection>\r
+ <sender>buttonBox</sender>\r
+ <signal>rejected()</signal>\r
+ <receiver>SortDialog</receiver>\r
+ <slot>reject()</slot>\r
+ <hints>\r
+ <hint type="sourcelabel">\r
+ <x>316</x>\r
+ <y>260</y>\r
+ </hint>\r
+ <hint type="destinationlabel">\r
+ <x>286</x>\r
+ <y>274</y>\r
+ </hint>\r
+ </hints>\r
+ </connection>\r
+ </connections>\r
+ <buttongroups>\r
+ <buttongroup name="buttonGroup_2"/>\r
+ <buttongroup name="buttonGroup_3"/>\r
+ <buttongroup name="buttonGroup"/>\r
+ </buttongroups>\r
+</ui>\r