DlgPrefLibrary::DlgPrefLibrary(QWidget * parent, ConfigObject<ConfigValue> * config, Library *pLibrary) : DlgPreferencePage(parent), m_dirListModel(), m_pconfig(config), m_pLibrary(pLibrary) { setupUi(this); slotUpdate(); checkbox_ID3_sync->setVisible(false); connect(this, SIGNAL(requestAddDir(QString)), m_pLibrary, SLOT(slotRequestAddDir(QString))); connect(this, SIGNAL(requestRemoveDir(QString, Library::RemovalType)), m_pLibrary, SLOT(slotRequestRemoveDir(QString, Library::RemovalType))); connect(this, SIGNAL(requestRelocateDir(QString,QString)), m_pLibrary, SLOT(slotRequestRelocateDir(QString,QString))); connect(PushButtonAddDir, SIGNAL(clicked()), this, SLOT(slotAddDir())); connect(PushButtonRemoveDir, SIGNAL(clicked()), this, SLOT(slotRemoveDir())); connect(PushButtonRelocateDir, SIGNAL(clicked()), this, SLOT(slotRelocateDir())); //connect(pushButtonM4A, SIGNAL(clicked()), this, SLOT(slotM4ACheck())); connect(pushButtonExtraPlugins, SIGNAL(clicked()), this, SLOT(slotExtraPlugins())); // plugins are loaded in src/main.cpp way early in boot so this is safe // here, doesn't need done at every slotUpdate QStringList plugins(SoundSourceProxy::supportedFileExtensionsByPlugins()); if (plugins.length() > 0) { pluginsLabel->setText(plugins.join(", ")); } }
DlgPrefLibrary::DlgPrefLibrary( QWidget* pParent, UserSettingsPointer pConfig, Library* pLibrary) : DlgPreferencePage(pParent), m_dirListModel(), m_pConfig(pConfig), m_pLibrary(pLibrary), m_bAddedDirectory(false), m_iOriginalTrackTableRowHeight(Library::kDefaultRowHeightPx) { setupUi(this); connect(this, SIGNAL(requestAddDir(QString)), m_pLibrary, SLOT(slotRequestAddDir(QString))); connect(this, SIGNAL(requestRemoveDir(QString, Library::RemovalType)), m_pLibrary, SLOT(slotRequestRemoveDir(QString, Library::RemovalType))); connect(this, SIGNAL(requestRelocateDir(QString,QString)), m_pLibrary, SLOT(slotRequestRelocateDir(QString,QString))); connect(PushButtonAddDir, SIGNAL(clicked()), this, SLOT(slotAddDir())); connect(PushButtonRemoveDir, SIGNAL(clicked()), this, SLOT(slotRemoveDir())); connect(PushButtonRelocateDir, SIGNAL(clicked()), this, SLOT(slotRelocateDir())); // Set default direction as stored in config file int rowHeight = m_pLibrary->getTrackTableRowHeight(); spinBoxRowHeight->setValue(rowHeight); connect(spinBoxRowHeight, SIGNAL(valueChanged(int)), this, SLOT(slotRowHeightValueChanged(int))); connect(libraryFontButton, SIGNAL(clicked()), this, SLOT(slotSelectFont())); // TODO(XXX) this string should be extracted from the soundsources QString builtInFormatsStr = "Ogg Vorbis, FLAC, WAVE, AIFF"; #if defined(__MAD__) || defined(__COREAUDIO__) builtInFormatsStr += ", MP3"; #endif #if defined(__MEDIAFOUNDATION__) || defined(__COREAUDIO__) || defined(__FAAD__) builtInFormatsStr += ", M4A/MP4"; #endif #ifdef __OPUS__ builtInFormatsStr += ", Opus"; #endif #ifdef __MODPLUG__ builtInFormatsStr += ", ModPlug"; #endif #ifdef __WV__ builtInFormatsStr += ", WavPack"; #endif builtInFormats->setText(builtInFormatsStr); connect(checkBox_SyncTrackMetadataExport, SIGNAL(toggled(bool)), this, SLOT(slotSyncTrackMetadataExportToggled())); // Initialize the controls after all slots have been connected slotUpdate(); }
BrowseFeature::BrowseFeature(QObject* parent, ConfigObject<ConfigValue>* pConfig, TrackCollection* pTrackCollection, RecordingManager* pRecordingManager) : LibraryFeature(parent), m_pConfig(pConfig), m_browseModel(this, pTrackCollection, pRecordingManager), m_proxyModel(&m_browseModel), m_pTrackCollection(pTrackCollection), m_pLastRightClickedItem(NULL) { connect(this, SIGNAL(requestAddDir(QString)), parent, SLOT(slotRequestAddDir(QString))); m_pAddQuickLinkAction = new QAction(tr("Add to Quick Links"),this); connect(m_pAddQuickLinkAction, SIGNAL(triggered()), this, SLOT(slotAddQuickLink())); m_pRemoveQuickLinkAction = new QAction(tr("Remove from Quick Links"),this); connect(m_pRemoveQuickLinkAction, SIGNAL(triggered()), this, SLOT(slotRemoveQuickLink())); m_pAddtoLibraryAction = new QAction(tr("Add to Library"),this); connect(m_pAddtoLibraryAction, SIGNAL(triggered()), this, SLOT(slotAddToLibrary())); m_proxyModel.setFilterCaseSensitivity(Qt::CaseInsensitive); m_proxyModel.setSortCaseSensitivity(Qt::CaseInsensitive); // The invisible root item of the child model TreeItem* rootItem = new TreeItem(); m_pQuickLinkItem = new TreeItem(tr("Quick Links"), QUICK_LINK_NODE, this, rootItem); rootItem->appendChild(m_pQuickLinkItem); // Create the 'devices' shortcut #if defined(__WINDOWS__) TreeItem* devices_link = new TreeItem( tr("Devices"), DEVICE_NODE, this, rootItem); rootItem->appendChild(devices_link); // show drive letters QFileInfoList drives = QDir::drives(); // show drive letters foreach (QFileInfo drive, drives) { TreeItem* driveLetter = new TreeItem( drive.canonicalPath(), // displays C: drive.filePath(), // Displays C:/ this , devices_link); devices_link->appendChild(driveLetter); }
BrowseFeature::BrowseFeature(QObject* parent, UserSettingsPointer pConfig, TrackCollection* pTrackCollection, RecordingManager* pRecordingManager) : LibraryFeature(parent), m_pConfig(pConfig), m_browseModel(this, pTrackCollection, pRecordingManager), m_proxyModel(&m_browseModel), m_pTrackCollection(pTrackCollection), m_pLastRightClickedItem(NULL) { connect(this, SIGNAL(requestAddDir(QString)), parent, SLOT(slotRequestAddDir(QString))); m_pAddQuickLinkAction = new QAction(tr("Add to Quick Links"),this); connect(m_pAddQuickLinkAction, SIGNAL(triggered()), this, SLOT(slotAddQuickLink())); m_pRemoveQuickLinkAction = new QAction(tr("Remove from Quick Links"),this); connect(m_pRemoveQuickLinkAction, SIGNAL(triggered()), this, SLOT(slotRemoveQuickLink())); m_pAddtoLibraryAction = new QAction(tr("Add to Library"),this); connect(m_pAddtoLibraryAction, SIGNAL(triggered()), this, SLOT(slotAddToLibrary())); m_proxyModel.setFilterCaseSensitivity(Qt::CaseInsensitive); m_proxyModel.setSortCaseSensitivity(Qt::CaseInsensitive); // BrowseThread sets the Qt::UserRole of every QStandardItem to the sort key // of the item. m_proxyModel.setSortRole(Qt::UserRole); // Dynamically re-sort contents as we add items to the source model. m_proxyModel.setDynamicSortFilter(true); // The invisible root item of the child model auto pRootItem = std::make_unique<TreeItem>(this); m_pQuickLinkItem = pRootItem->appendChild(tr("Quick Links"), QUICK_LINK_NODE); // Create the 'devices' shortcut #if defined(__WINDOWS__) TreeItem* devices_link = pRootItem->appendChild(tr("Devices"), DEVICE_NODE); // show drive letters QFileInfoList drives = QDir::drives(); // show drive letters foreach (QFileInfo drive, drives) { // Using drive.filePath() to get path to display instead of drive.canonicalPath() // as it delay the startup too much if there is a network share mounted // (drive letter assigned) but unavailable // We avoid using canonicalPath() here because it makes an // unneeded system call to the underlying filesystem which // can be very long if the said filesystem is an unavailable // network share. drive.filePath() doesn't make any filesystem call // in this case because drive is an absolute path as it is taken from // QDir::drives(). See Qt's QDir code, especially qdir.cpp QString display_path = drive.filePath(); if (display_path.endsWith("/")) { display_path.chop(1); } TreeItem* driveLetter = devices_link->appendChild( display_path, // Displays C: drive.filePath()); // Displays C:/ }
DlgPrefLibrary::DlgPrefLibrary(QWidget * parent, UserSettingsPointer config, Library *pLibrary) : DlgPreferencePage(parent), m_dirListModel(), m_pconfig(config), m_pLibrary(pLibrary), m_baddedDirectory(false), m_iOriginalTrackTableRowHeight(Library::kDefaultRowHeightPx) { setupUi(this); slotUpdate(); checkbox_ID3_sync->setVisible(false); connect(this, SIGNAL(requestAddDir(QString)), m_pLibrary, SLOT(slotRequestAddDir(QString))); connect(this, SIGNAL(requestRemoveDir(QString, Library::RemovalType)), m_pLibrary, SLOT(slotRequestRemoveDir(QString, Library::RemovalType))); connect(this, SIGNAL(requestRelocateDir(QString,QString)), m_pLibrary, SLOT(slotRequestRelocateDir(QString,QString))); connect(PushButtonAddDir, SIGNAL(clicked()), this, SLOT(slotAddDir())); connect(PushButtonRemoveDir, SIGNAL(clicked()), this, SLOT(slotRemoveDir())); connect(PushButtonRelocateDir, SIGNAL(clicked()), this, SLOT(slotRelocateDir())); //connect(pushButtonM4A, SIGNAL(clicked()), this, SLOT(slotM4ACheck())); connect(pushButtonExtraPlugins, SIGNAL(clicked()), this, SLOT(slotExtraPlugins())); // plugins are loaded in src/main.cpp way early in boot so this is safe // here, doesn't need done at every slotUpdate QStringList plugins(SoundSourceProxy::getSupportedFileExtensionsByPlugins()); if (plugins.length() > 0) { pluginsLabel->setText(plugins.join(", ")); } // Set default direction as stored in config file int rowHeight = m_pLibrary->getTrackTableRowHeight(); spinBoxRowHeight->setValue(rowHeight); connect(spinBoxRowHeight, SIGNAL(valueChanged(int)), this, SLOT(slotRowHeightValueChanged(int))); connect(libraryFontButton, SIGNAL(clicked()), this, SLOT(slotSelectFont())); connect(this, SIGNAL(setTrackTableFont(QFont)), m_pLibrary, SLOT(slotSetTrackTableFont(QFont))); connect(this, SIGNAL(setTrackTableRowHeight(int)), m_pLibrary, SLOT(slotSetTrackTableRowHeight(int))); // TODO(XXX) this string should be extracted from the soundsources QString builtInFormatsStr = "Ogg Vorbis, FLAC, WAVe, AIFF"; #if defined(__MAD__) || defined(__APPLE__) builtInFormatsStr += ", MP3"; #endif #ifdef __OPUS__ builtInFormatsStr += ", Opus"; #endif #ifdef _MODPLUG_ builtInFormatsStr += ", ModPlug"; #endif builtInFormats->setText(builtInFormatsStr); }