OSDN Git Service

Ver0.26
[gefu/Gefu.git] / sortdialog.cpp
index e2b1a2b..adceaa1 100644 (file)
-#include "common.h"\r
+#include "foldermodel.h"\r
 #include "sortdialog.h"\r
 #include "ui_sortdialog.h"\r
-#include <QSettings>\r
-#include <QDir>\r
 \r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::SortDialog\r
+/// \param parent   親ウィジェット\r
+///\r
+/// コンストラクタ\r
+///\r
 SortDialog::SortDialog(QWidget *parent) :\r
     QDialog(parent),\r
     ui(new Ui::SortDialog),\r
-    m_RightOrLeft()\r
+    m_model(NULL)\r
 {\r
     ui->setupUi(this);\r
 }\r
 \r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::~SortDialog\r
+///\r
+/// デストラクタ\r
+///\r
 SortDialog::~SortDialog()\r
 {\r
     delete ui;\r
 }\r
 \r
-void SortDialog::setRightOrLeft(const QString &s)\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::setModel\r
+/// \param m    フォルダモデル\r
+///\r
+/// モデルを設定します。\r
+///\r
+void SortDialog::setModel(FolderModel *m)\r
 {\r
-    QSettings settings;\r
+    m_model = m;\r
+    QDir::SortFlags sort = m->sorting();\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
+    if (sort & QDir::Time) {\r
+        ui->sortByDate->setChecked(true);\r
+        if (sort & QDir::Reversed)\r
+            ui->orderAsc->setChecked(true);\r
     }\r
-    else if (sortBy == SortBySize) {\r
+    else if (sort & QDir::Size) {\r
         ui->sortBySize->setChecked(true);\r
+        if (sort & QDir::Reversed)\r
+            ui->orderAsc->setChecked(true);\r
     }\r
-    else if (sortBy == SortByDate) {\r
-        ui->sortByDate->setChecked(true);\r
+    else if (sort & QDir::Type) {\r
+        ui->sortByType->setChecked(true);\r
+        if (sort & QDir::Reversed)\r
+            ui->orderDesc->setChecked(true);\r
     }\r
     else {\r
         ui->sortByName->setChecked(true);\r
+        if (sort & QDir::Reversed)\r
+            ui->orderDesc->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
+    if (sort & QDir::DirsFirst) {\r
+        ui->dirsFirst->setChecked(true);\r
     }\r
-    else if (putDirs == PutDirsLast) {\r
+    else if (sort & QDir::DirsLast) {\r
         ui->dirsLast->setChecked(true);\r
     }\r
     else {\r
-        ui->dirsFirst->setChecked(true);\r
+        ui->dirsLast->setChecked(true);\r
     }\r
 \r
-    bool ignoreCase = settings.value(\r
-                m_RightOrLeft + slash + IniKey_IgnoreCase, true).toBool();\r
-    ui->ignoreCase->setChecked(ignoreCase);\r
+    if (sort & QDir::IgnoreCase)\r
+        ui->ignoreCase->setChecked(true);\r
 }\r
 \r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::accept\r
+///\r
+/// OKボタンクリック時の処理を行います。\r
+///\r
 void SortDialog::accept()\r
 {\r
-    QSettings settings;\r
+    QDir::SortFlags sort;\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
+        sort |= QDir::Time;\r
+        if (ui->orderAsc->isChecked())\r
+            sort |= QDir::Reversed;\r
     }\r
     else if (ui->sortBySize->isChecked()) {\r
-        settings.setValue(key, SortBySize);\r
+        sort |= QDir::Size;\r
+        if (ui->orderAsc->isChecked())\r
+            sort |= QDir::Reversed;\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
+    else if (ui->sortByType->isChecked()) {\r
+        sort |= QDir::Type;\r
+        if (ui->orderDesc->isChecked())\r
+            sort |= QDir::Reversed;\r
     }\r
     else {\r
-        settings.setValue(key, OrderByDesc);\r
+        sort |= QDir::Name;\r
+        if (ui->orderDesc->isChecked())\r
+            sort |= QDir::Reversed;\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
+    if (ui->dirsFirst->isChecked()) {\r
+        sort |= QDir::DirsFirst;\r
     }\r
-    else {\r
-        settings.setValue(key, PutDirsLast);\r
+    else if (ui->dirsLast->isChecked()) {\r
+        sort |= QDir::DirsLast;\r
     }\r
 \r
-    key = m_RightOrLeft + slash + IniKey_IgnoreCase;\r
-    settings.setValue(key, ui->ignoreCase->isChecked());\r
+    if (ui->ignoreCase->isChecked())\r
+        sort |= QDir::IgnoreCase;\r
+\r
+    m_model->setSorting(sort);\r
+    m_model->refresh();\r
 \r
     QDialog::accept();\r
 }\r