File indexing completed on 2024-05-12 04:46:01
0001 #include "folderconfig.h" 0002 #include <QSettings> 0003 0004 #include <QDebug> 0005 0006 FolderConfig::FolderConfig(QObject *parent) : QObject(parent) 0007 ,m_settings(nullptr) 0008 { 0009 0010 } 0011 0012 FolderConfig::~FolderConfig() 0013 { 0014 if(m_settings) 0015 { 0016 m_settings->deleteLater(); 0017 } 0018 } 0019 0020 void FolderConfig::setSortKey(const FMList::SORTBY &value) 0021 { 0022 if(m_sortKey == value) 0023 { 0024 return; 0025 } 0026 0027 m_sortKey = value; 0028 Q_EMIT sortKeyChanged(); 0029 0030 if(m_enabled) 0031 { 0032 setDirConf("SortBy", this->m_sortKey); 0033 } 0034 } 0035 0036 FMList::SORTBY FolderConfig::sortKey() const 0037 { 0038 return m_sortKey; 0039 } 0040 0041 void FolderConfig::setTerminalVisible(const bool &value) 0042 { 0043 if(m_terminalVisible == value) 0044 { 0045 return; 0046 } 0047 0048 m_terminalVisible = value; 0049 Q_EMIT terminalVisibleChanged(); 0050 0051 if(m_enabled) 0052 { 0053 setDirConf("ShowTerminal", this->m_terminalVisible); 0054 } 0055 } 0056 0057 bool FolderConfig::terminalVisible() const 0058 { 0059 return m_terminalVisible; 0060 } 0061 0062 QUrl FolderConfig::getPath() const 0063 { 0064 return m_path; 0065 } 0066 0067 void FolderConfig::setPath(QUrl path) 0068 { 0069 if (m_path == path) 0070 return; 0071 0072 m_path = path; 0073 Q_EMIT pathChanged(m_path); 0074 } 0075 0076 FMList::VIEW_TYPE FolderConfig::viewType() const 0077 { 0078 return m_viewType; 0079 } 0080 0081 FMList::SORTBY FolderConfig::fallbackSortKey() const 0082 { 0083 return m_fallbackSortKey; 0084 } 0085 0086 FMList::VIEW_TYPE FolderConfig::fallbackViewType() const 0087 { 0088 return m_fallbackViewType; 0089 } 0090 0091 void FolderConfig::setViewType(FMList::VIEW_TYPE viewType) 0092 { 0093 if (m_viewType == viewType) 0094 return; 0095 0096 m_viewType = viewType; 0097 Q_EMIT viewTypeChanged(m_viewType); 0098 0099 if(m_enabled) 0100 { 0101 setDirConf( "ViewType", this->m_viewType); 0102 } 0103 } 0104 0105 void FolderConfig::setFallbackSortKey(FMList::SORTBY fallbackSortKey) 0106 { 0107 if (m_fallbackSortKey == fallbackSortKey) 0108 return; 0109 0110 m_fallbackSortKey = fallbackSortKey; 0111 Q_EMIT fallbackSortKeyChanged(); 0112 } 0113 0114 void FolderConfig::setFallbackViewType(FMList::VIEW_TYPE fallbackViewType) 0115 { 0116 if (m_fallbackViewType == fallbackViewType) 0117 return; 0118 0119 m_fallbackViewType = fallbackViewType; 0120 Q_EMIT fallbackViewTypeChanged(); 0121 } 0122 0123 void FolderConfig::setEnabled(bool enabled) 0124 { 0125 if (m_enabled == enabled) 0126 return; 0127 0128 m_enabled = enabled; 0129 Q_EMIT enabledChanged(); 0130 } 0131 0132 void FolderConfig::setDirConf(const QString &key, const QVariant &value) 0133 { 0134 if(!m_settings) 0135 return; 0136 0137 if (!m_path.isValid() || !m_path.isLocalFile() || !FMH::fileExists(m_path)) 0138 { 0139 qWarning() << "URL recived is not a local file" << m_path; 0140 return; 0141 } 0142 0143 m_settings->beginGroup("Index"); 0144 m_settings->setValue(key, value); 0145 m_settings->endGroup(); 0146 m_settings->sync(); 0147 } 0148 0149 void FolderConfig::setValues() 0150 { 0151 if(!m_enabled) 0152 return; 0153 0154 if (!m_path.isValid() || !m_path.isLocalFile() || !FMH::fileExists(m_path)) 0155 { 0156 qWarning() << "URL recived is not a local file" << m_path; 0157 return; 0158 } 0159 0160 bool showterminal = false; 0161 uint sortby = m_fallbackSortKey; 0162 uint viewType = m_fallbackViewType; 0163 0164 auto configUrl = QUrl(m_path.toString()+"/.directory"); 0165 m_settings = new QSettings(configUrl.toLocalFile(), QSettings::Format::NativeFormat); 0166 0167 if (FMH::fileExists(configUrl) && configUrl.isLocalFile()) 0168 { 0169 m_settings->beginGroup("Index"); 0170 0171 showterminal = m_settings->value("ShowTerminal", false).toBool(); 0172 sortby= m_settings->value("SortBy", m_fallbackSortKey).toUInt(); 0173 viewType = m_settings->value("ViewType", m_fallbackViewType).toUInt(); 0174 m_settings->endGroup(); 0175 } 0176 0177 this->m_terminalVisible = showterminal; 0178 this->m_sortKey = static_cast<FMList::SORTBY>(sortby); 0179 this->m_viewType = static_cast<FMList::VIEW_TYPE>(viewType); 0180 0181 Q_EMIT terminalVisibleChanged(); 0182 Q_EMIT sortKeyChanged(); 0183 Q_EMIT viewTypeChanged(m_viewType); 0184 } 0185 0186 void FolderConfig::resetToFallbackValues() 0187 { 0188 this->m_terminalVisible = false; 0189 this->m_sortKey = m_fallbackSortKey; 0190 this->m_viewType = m_fallbackViewType; 0191 0192 Q_EMIT terminalVisibleChanged(); 0193 Q_EMIT sortKeyChanged(); 0194 Q_EMIT viewTypeChanged(m_viewType); 0195 } 0196 0197 void FolderConfig::classBegin() 0198 { 0199 } 0200 0201 void FolderConfig::componentComplete() 0202 { 0203 m_sortKey = m_fallbackSortKey; 0204 m_viewType = m_fallbackViewType; 0205 0206 connect(this, &FolderConfig::pathChanged, [this](QUrl) 0207 { 0208 setValues(); 0209 }); 0210 0211 connect(this, &FolderConfig::fallbackViewTypeChanged, [this]() 0212 { 0213 if(!m_enabled) 0214 { 0215 this->m_viewType = m_fallbackViewType; 0216 Q_EMIT viewTypeChanged(m_viewType); 0217 } 0218 }); 0219 0220 connect(this, &FolderConfig::fallbackSortKeyChanged, [this]() 0221 { 0222 if(!m_enabled) 0223 { 0224 this->m_sortKey = m_fallbackSortKey; 0225 Q_EMIT sortKeyChanged(); 0226 } 0227 }); 0228 0229 connect(this, &FolderConfig::enabledChanged, [this]() 0230 { 0231 if(!m_enabled) 0232 { 0233 resetToFallbackValues(); 0234 }else 0235 { 0236 setValues(); 0237 } 0238 }); 0239 0240 setValues(); 0241 } 0242 0243 bool FolderConfig::enabled() const 0244 { 0245 return m_enabled; 0246 }