/** ***************************************************************************/ Applications::Extension::Extension() : IExtension("Applications") { qDebug("[%s] Initialize extension", name_); // Add the userspace icons dir which is not covered in the specs QFileInfo userSpaceIconsPath(QDir(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)).filePath("icons")); if (userSpaceIconsPath.exists() && userSpaceIconsPath.isDir()) QIcon::setThemeSearchPaths(QStringList(userSpaceIconsPath.absoluteFilePath()) << QIcon::themeSearchPaths()); // Load settings QSettings s; s.beginGroup(name_); offlineIndex_.setFuzzy(s.value(CFG_FUZZY, DEF_FUZZY).toBool()); // Load the paths or set a default QVariant v = s.value(CFG_PATHS); if (v.isValid() && v.canConvert(QMetaType::QStringList)) rootDirs_ = v.toStringList(); else restorePaths(); // Set terminal emulator v = s.value(CFG_TERM); if (v.isValid() && v.canConvert(QMetaType::QString)) DesktopEntry::terminal = v.toString(); else{ DesktopEntry::terminal = getenv("TERM"); if (DesktopEntry::terminal.isEmpty()) DesktopEntry::terminal = DEF_TERM; else DesktopEntry::terminal.append(" -e %1"); } // Keep the Applications in sync with the OS updateDelayTimer_.setInterval(UPDATE_DELAY); updateDelayTimer_.setSingleShot(true); connect(&watcher_, &QFileSystemWatcher::directoryChanged, &updateDelayTimer_, static_cast<void(QTimer::*)()>(&QTimer::start)); connect(this, &Extension::rootDirsChanged, &updateDelayTimer_, static_cast<void(QTimer::*)()>(&QTimer::start)); connect(&updateDelayTimer_, &QTimer::timeout, this, &Extension::updateIndex, Qt::QueuedConnection); // Deserialize data QFile dataFile(QDir(QStandardPaths::writableLocation(QStandardPaths::DataLocation)) .filePath(QString("%1.dat").arg(name_))); if (dataFile.exists()) { if (dataFile.open(QIODevice::ReadOnly|QIODevice::Text)) { qDebug("[%s] Deserializing from %s", name_, dataFile.fileName().toLocal8Bit().data()); QDataStream in(&dataFile); quint64 count; for (in >> count ;count != 0; --count){ shared_ptr<DesktopEntry> deshrp = std::make_shared<DesktopEntry>(); deshrp->deserialize(in); index_.push_back(deshrp); } dataFile.close(); // Build the offline index for (const auto &item : index_) offlineIndex_.add(item); } else
/** ***************************************************************************/ Files::Extension::Extension() : IExtension("Files") { qDebug("[%s] Initialize extension", name_); minuteTimer_.setInterval(60000); // Load settings qApp->settings()->beginGroup(name_); indexAudio_ = qApp->settings()->value(CFG_INDEX_AUDIO, DEF_INDEX_AUDIO).toBool(); indexVideo_ = qApp->settings()->value(CFG_INDEX_VIDEO, DEF_INDEX_VIDEO).toBool(); indexImage_ = qApp->settings()->value(CFG_INDEX_IMAGE, DEF_INDEX_IMAGE).toBool(); indexDocs_ = qApp->settings()->value(CFG_INDEX_DOC, DEF_INDEX_DOC).toBool(); indexDirs_ = qApp->settings()->value(CFG_INDEX_DIR, DEF_INDEX_DIR).toBool(); indexHidden_ = qApp->settings()->value(CFG_INDEX_HIDDEN, DEF_INDEX_HIDDEN).toBool(); followSymlinks_ = qApp->settings()->value(CFG_FOLLOW_SYMLINKS, DEF_FOLLOW_SYMLINKS).toBool(); offlineIndex_.setFuzzy(qApp->settings()->value(CFG_FUZZY, DEF_FUZZY).toBool()); setScanInterval(qApp->settings()->value(CFG_SCAN_INTERVAL, DEF_SCAN_INTERVAL).toUInt()); // Load the paths or set a default QVariant v = qApp->settings()->value(CFG_PATHS); if (v.isValid() && v.canConvert(QMetaType::QStringList)) rootDirs_ = v.toStringList(); else restorePaths(); qApp->settings()->endGroup(); // Deserialize data QFile dataFile(QDir(QStandardPaths::writableLocation(QStandardPaths::DataLocation)). filePath(QString("%1.dat").arg(name_))); if (dataFile.exists()) { if (dataFile.open(QIODevice::ReadOnly| QIODevice::Text)) { qDebug() << "[Files] Deserializing from" << dataFile.fileName(); QDataStream in(&dataFile); quint64 count; for (in >> count ;count != 0; --count){ shared_ptr<File> file = std::make_shared<File>(); file->deserialize(in); index_.push_back(file); } dataFile.close(); // Build the offline index for (const auto &item : index_) offlineIndex_.add(item); } else