OSDN Git Service

高速化の試み
[gefu/Gefu.git] / mainwindow.cpp
index 97ea4d5..c6b44a0 100644 (file)
@@ -42,7 +42,8 @@ MainWindow::MainWindow(QWidget *parent) :
     ui(new Ui::MainWindow),\r
     m_overwriteDialog(this),\r
     m_viewMode(ModeBasic),\r
-    m_prevMode(ModeBasic)\r
+    m_prevMode(ModeBasic),\r
+    m_actions()\r
 {\r
     ui->setupUi(this);\r
     connect(qApp, SIGNAL(focusChanged(QWidget*,QWidget*)), this, SLOT(app_focusChange(QWidget*,QWidget*)));\r
@@ -101,6 +102,11 @@ MainWindow::MainWindow(QWidget *parent) :
     if (prefs.isCheckUpdate()) {\r
         onCheckUpdate(true);\r
     }\r
+\r
+    ui->LPanel->updateAppearance(prefs);\r
+    ui->LPanel->model()->updateAppearance(prefs);\r
+    ui->RPanel->updateAppearance(prefs);\r
+    ui->RPanel->model()->updateAppearance(prefs);\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////////\r
@@ -130,6 +136,8 @@ void MainWindow::app_focusChange(QWidget *old, QWidget *now)
     if (now && (now->objectName() == "folderView" ||\r
                 now->objectName() == "thumbnailView"))\r
     {\r
+        connect(focusItemView()->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),\r
+                this, SLOT(view_currentChanged(QModelIndex,QModelIndex)));\r
         FolderModel *m = static_cast<FolderModel*>(focusItemView()->model());\r
         setActiveModel(m);\r
         ui->statusBar->showMessage(m->filePath(focusItemView()->currentIndex()));\r
@@ -1460,9 +1468,19 @@ void MainWindow::onScaleDown()
         view->scaleDown();\r
     }\r
 \r
-    ui->LPanel->updateAppearance();\r
-    ui->RPanel->updateAppearance();\r
-    ui->FPanel->updateAppearance();\r
+    Preferences prefs(this);\r
+    if (ui->LPanel->isVisible()) {\r
+        ui->LPanel->updateAppearance(prefs);\r
+        ui->LPanel->model()->updateAppearance(prefs);\r
+    }\r
+    if (ui->RPanel->isVisible()) {\r
+        ui->RPanel->updateAppearance(prefs);\r
+        ui->RPanel->model()->updateAppearance(prefs);\r
+    }\r
+    if (ui->FPanel->isVisible()) {\r
+        ui->FPanel->updateAppearance(prefs);\r
+        ui->FPanel->model()->updateAppearance(prefs);\r
+    }\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////////\r
@@ -1479,9 +1497,19 @@ void MainWindow::onScaleUp()
         view->scaleUp();\r
     }\r
 \r
-    ui->LPanel->updateAppearance();\r
-    ui->RPanel->updateAppearance();\r
-    ui->FPanel->updateAppearance();\r
+    Preferences prefs(this);\r
+    if (ui->LPanel->isVisible()) {\r
+        ui->LPanel->updateAppearance(prefs);\r
+        ui->LPanel->model()->updateAppearance(prefs);\r
+    }\r
+    if (ui->RPanel->isVisible()) {\r
+        ui->RPanel->updateAppearance(prefs);\r
+        ui->RPanel->model()->updateAppearance(prefs);\r
+    }\r
+    if (ui->FPanel->isVisible()) {\r
+        ui->FPanel->updateAppearance(prefs);\r
+        ui->FPanel->model()->updateAppearance(prefs);\r
+    }\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////////\r
@@ -1512,6 +1540,8 @@ void MainWindow::initBookmarkMenu()
                     SLOT(onOpenBookmark()));\r
         action->setData(n);\r
     }\r
+\r
+    m_actions = findChildren<QAction*>();\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////////\r
@@ -1605,9 +1635,19 @@ void MainWindow::showPreferenceDialog()
 \r
     PreferenceDialog dlg(this);\r
     if (dlg.exec() == QDialog::Accepted) {\r
-        ui->LPanel->updateAppearance();\r
-        ui->RPanel->updateAppearance();\r
-        ui->FPanel->updateAppearance();\r
+        Preferences prefs(this);\r
+        if (ui->LPanel->isVisible()) {\r
+            ui->LPanel->updateAppearance(prefs);\r
+            ui->LPanel->model()->updateAppearance(prefs);\r
+        }\r
+        if (ui->RPanel->isVisible()) {\r
+            ui->RPanel->updateAppearance(prefs);\r
+            ui->RPanel->model()->updateAppearance(prefs);\r
+        }\r
+        if (ui->FPanel->isVisible()) {\r
+            ui->FPanel->updateAppearance(prefs);\r
+            ui->FPanel->model()->updateAppearance(prefs);\r
+        }\r
     }\r
 }\r
 \r
@@ -1846,9 +1886,19 @@ void MainWindow::setActiveModel(FolderModel *m)
     connect(ui->action_MarkInvert, SIGNAL(triggered()), activeModel(), SLOT(onMarkInvert()));\r
     connect(ui->action_Refresh, SIGNAL(triggered()), activeModel(), SLOT(refresh()));\r
 \r
-    ui->LPanel->updateAppearance();\r
-    ui->RPanel->updateAppearance();\r
-    ui->FPanel->updateAppearance();\r
+    Preferences prefs(this);\r
+    if (ui->LPanel->isVisible()) {\r
+        ui->LPanel->updateAppearance(prefs);\r
+        ui->LPanel->model()->updateAppearance(prefs);\r
+    }\r
+    if (ui->RPanel->isVisible()) {\r
+        ui->RPanel->updateAppearance(prefs);\r
+        ui->RPanel->model()->updateAppearance(prefs);\r
+    }\r
+    if (ui->FPanel->isVisible()) {\r
+        ui->FPanel->updateAppearance(prefs);\r
+        ui->FPanel->model()->updateAppearance(prefs);\r
+    }\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////////\r
@@ -2179,98 +2229,6 @@ void MainWindow::updateActions()
 \r
     ui->action_historyBack->setEnabled(!activeModel()->isHistoryBegin());\r
     ui->action_HistoryForward->setEnabled(!activeModel()->isHistoryEnd());\r
-\r
-#if 0\r
-    FolderView *view;\r
-    if ((view = qobject_cast<FolderView*>(w))) {\r
-        setEnabledAllActions(true);\r
-        qDebug() << ">>>>> フォルダビューの共通メニュー設定 <<<<<";\r
-        ui->action_SearchNext->setEnabled(false);\r
-        ui->action_SearchPrev->setEnabled(false);\r
-\r
-        // 「開く」アクションを変更する\r
-        QFileInfo info(activeModel()->fileInfo(view->currentIndex()));\r
-        if (info.isDir()) {\r
-            ui->action_Open->setIcon(QIcon("://images/Open.png"));\r
-            ui->action_Open->setText(tr("開く"));\r
-            ui->action_Open->setToolTip(tr("開く"));\r
-        }\r
-        else {\r
-            ui->action_Open->setIcon(QIcon("://images/Search text.png"));\r
-            ui->action_Open->setText(tr("内蔵ビューアで開く"));\r
-            ui->action_Open->setToolTip(tr("内蔵ビューアで開く"));\r
-\r
-            QSettings settings;\r
-            if (!settings.value(IniKey_ViewerForceOpen).toBool()) {\r
-                QStringList list = settings.value(IniKey_ViewerIgnoreExt).toString().split(",");\r
-                foreach (const QString &ext, list) {\r
-                    if (ext.toLower() == info.suffix().toLower()) {\r
-                        ui->action_Open->setEnabled(false);\r
-                        break;\r
-                    }\r
-                }\r
-            }\r
-        }\r
-\r
-        if (info.fileName() == ".." && activeModel()->markedItems().isEmpty()) {\r
-            // ファイル操作を抑止\r
-            ui->action_Copy->setEnabled(false);\r
-            ui->action_Delete->setEnabled(false);\r
-            ui->action_Move->setEnabled(false);\r
-            ui->action_Rename->setEnabled(false);\r
-        }\r
-\r
-        if (m_viewMode & ModeBasic) {\r
-            qDebug() << ">>>>> 通常モードのメニュー設定 <<<<<";\r
-            ui->action_SearchNext->setEnabled(false);\r
-            ui->action_SearchPrev->setEnabled(false);\r
-\r
-            ui->action_historyBack->setEnabled(!activeModel()->isHistoryBegin());\r
-            ui->action_HistoryForward->setEnabled(!activeModel()->isHistoryEnd());\r
-\r
-            QSettings settings;\r
-            ui->action_OpenEditor->setEnabled(!settings.value(IniKey_PathEditor).toString().isEmpty());\r
-            ui->action_OpenTerminal->setEnabled(!settings.value(IniKey_PathTerminal).toString().isEmpty());\r
-\r
-        }\r
-        else if (!otherSideFolderView(view)->isVisible()) {\r
-            qDebug() << ">>>>> ハーフモードのメニュー設定 <<<<<";\r
-            ui->action_SyncPanel->setEnabled(false);\r
-            ui->action_SyncPanelTo->setEnabled(false);\r
-            ui->action_Copy->setEnabled(false);\r
-            ui->action_Move->setEnabled(false);\r
-        }\r
-    }\r
-    else if (qobject_cast<SearchBox*>(w)) {\r
-        qDebug() << ">>>>> 検索モードのメニュー設定 <<<<<";\r
-        setEnabledAllActions(false);\r
-        ui->toggle_Search->setEnabled(true);\r
-        ui->action_SearchNext->setEnabled(true);\r
-        ui->action_SearchPrev->setEnabled(true);\r
-        ui->action_About->setEnabled(true);\r
-    }\r
-    else if (qobject_cast<SimpleImageView*>(w) ||\r
-             qobject_cast<SimpleTextView*>(w))\r
-    {\r
-        qDebug() << ">>>>> ビューアモードのメニュー設定 <<<<<";\r
-        setEnabledAllActions(false);\r
-        ui->action_Quit->setEnabled(true);\r
-        ui->action_Setting->setEnabled(true);\r
-        ui->action_CheckUpdate->setEnabled(true);\r
-        ui->view_FontSizeDown->setEnabled(true);\r
-        ui->view_FontSizeUp->setEnabled(true);\r
-        ui->action_KeyDown->setEnabled(true);\r
-        ui->action_KeyEnd->setEnabled(true);\r
-        ui->action_KeyHome->setEnabled(true);\r
-        ui->action_KeyUp->setEnabled(true);\r
-        ui->action_About->setEnabled(true);\r
-        ui->key_Left->setEnabled(true);\r
-        ui->key_Right->setEnabled(true);\r
-        if (m_viewMode == ModePreview) {\r
-            ui->view_HalfMode->setEnabled(true);\r
-        }\r
-    }\r
-#endif\r
 }\r
 \r
 ///////////////////////////////////////////////////////////////////////////////\r
@@ -2282,7 +2240,7 @@ void MainWindow::updateActions()
 void MainWindow::setEnabledAllActions(bool enable)\r
 {\r
     qDebug() << "MainWindow::setEnabledAllActions()" << enable;\r
-    foreach (QAction *action, findChildren<QAction*>()) {\r
+    foreach (QAction *action, m_actions) {\r
         action->setEnabled(enable);\r
     }\r
 }\r