| 661 | } |
| 662 | |
| 663 | void ResourceFolderModel::loadColumns(QTreeView* tree) |
| 664 | { |
| 665 | auto const stateSettingName = QString("UI/%1_Page/Columns").arg(id()); |
| 666 | auto const overrideSettingName = QString("UI/%1_Page/ColumnsOverride").arg(id()); |
| 667 | auto const visibilitySettingName = QString("UI/%1_Page/ColumnsVisibility").arg(id()); |
| 668 | |
| 669 | auto stateSetting = m_instance->settings()->getOrRegisterSetting(stateSettingName, ""); |
| 670 | tree->header()->restoreState(QByteArray::fromBase64(stateSetting->get().toString().toUtf8())); |
| 671 | |
| 672 | auto setVisible = [this, tree](QVariant value) { |
| 673 | auto visibility = Json::toMap(value.toString()); |
| 674 | for (auto i = 0; i < m_column_names.size(); ++i) { |
| 675 | if (m_columnsHideable[i]) { |
| 676 | auto name = m_column_names[i]; |
| 677 | tree->setColumnHidden(i, !visibility.value(name, false).toBool()); |
| 678 | } |
| 679 | } |
| 680 | }; |
| 681 | |
| 682 | auto const defaultValue = Json::fromMap({ |
| 683 | { "Image", true }, |
| 684 | { "Version", true }, |
| 685 | { "Last Modified", true }, |
| 686 | { "Provider", true }, |
| 687 | { "Pack Format", true }, |
| 688 | }); |
| 689 | // neither passthrough nor override settings works for this usecase as I need to only set the global when the gate is false |
| 690 | auto settings = m_instance->settings(); |
| 691 | if (!settings->getOrRegisterSetting(overrideSettingName, false)->get().toBool()) { |
| 692 | settings = APPLICATION->settings(); |
| 693 | } |
| 694 | auto visibility = settings->getOrRegisterSetting(visibilitySettingName, defaultValue); |
| 695 | setVisible(visibility->get()); |
| 696 | |
| 697 | // allways connect the signal in case the setting is toggled on and off |
| 698 | auto gSetting = APPLICATION->settings()->getOrRegisterSetting(visibilitySettingName, defaultValue); |
| 699 | connect(gSetting.get(), &Setting::SettingChanged, tree, [this, setVisible, overrideSettingName](const Setting&, QVariant value) { |
| 700 | if (!m_instance->settings()->get(overrideSettingName).toBool()) { |
| 701 | setVisible(value); |
| 702 | } |
| 703 | }); |
| 704 | } |
| 705 | |
| 706 | QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree) |
| 707 | { |