void PlaylistView::SetColumnAlignment(int section, Qt::Alignment alignment) { if (section < 0) return; column_alignment_[section] = alignment; emit ColumnAlignmentChanged(column_alignment_); SaveSettings(); }
void PlaylistHeader::AlignCurrentCenter() { if (menu_section_ == -1) return; PlaylistView* view = static_cast<PlaylistView*>(parent()); view->playlist()->set_column_align_center(menu_section_); emit ColumnAlignmentChanged(); }
PlaylistView::PlaylistView(QWidget *parent) : QTreeView(parent), style_(new PlaylistProxyStyle(style())), playlist_(NULL), header_(new PlaylistHeader(Qt::Horizontal, this)), setting_initial_header_layout_(false), upgrading_from_qheaderview_(false), read_only_settings_(true), glow_enabled_(true), currently_glowing_(false), glow_intensity_step_(0), rating_delegate_(NULL), inhibit_autoscroll_timer_(new QTimer(this)), inhibit_autoscroll_(false), currently_autoscrolling_(false), row_height_(-1), currenttrack_play_(":currenttrack_play.png"), currenttrack_pause_(":currenttrack_pause.png"), cached_current_row_row_(-1), drop_indicator_row_(-1), drag_over_(false), dynamic_controls_(new DynamicPlaylistControls(this)) { setHeader(header_); header_->setMovable(true); setStyle(style_); setMouseTracking(true); connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(SaveGeometry())); connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(SaveGeometry())); connect(header_, SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), SLOT(SaveGeometry())); connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(SaveGeometry())); connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(InvalidateCachedCurrentPixmap())); connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(InvalidateCachedCurrentPixmap())); connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(InvalidateCachedCurrentPixmap())); connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(SaveSettings())); connect(header_, SIGNAL(ColumnAlignmentChanged()), SLOT(SaveSettings())); connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(StretchChanged(bool))); connect(header_, SIGNAL(MouseEntered()), SLOT(RatingHoverOut())); inhibit_autoscroll_timer_->setInterval(kAutoscrollGraceTimeout * 1000); inhibit_autoscroll_timer_->setSingleShot(true); connect(inhibit_autoscroll_timer_, SIGNAL(timeout()), SLOT(InhibitAutoscrollTimeout())); horizontalScrollBar()->installEventFilter(this); verticalScrollBar()->installEventFilter(this); setAlternatingRowColors(true); setAttribute(Qt::WA_MacShowFocusRect, false); dynamic_controls_->hide(); #ifdef Q_OS_DARWIN setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); #endif }
void PlaylistView::ReloadSettings() { QSettings s; s.beginGroup(Playlist::kSettingsGroup); glow_enabled_ = s.value("glow_effect", true).toBool(); if (setting_initial_header_layout_ || upgrading_from_qheaderview_) { header_->SetStretchEnabled(s.value("stretch", true).toBool()); upgrading_from_qheaderview_ = false; } if (currently_glowing_ && glow_enabled_ && isVisible()) StartGlowing(); if (!glow_enabled_) StopGlowing(); if (setting_initial_header_layout_) { header_->SetColumnWidth(Playlist::Column_Length, 0.06); header_->SetColumnWidth(Playlist::Column_Track, 0.05); setting_initial_header_layout_ = false; } if (upgrading_from_version_ != -1) { if (upgrading_from_version_ < 4) { header_->SetColumnWidth(Playlist::Column_Source, 0.05); } upgrading_from_version_ = -1; } column_alignment_ = s.value("column_alignments").value<ColumnAlignmentMap>(); if (column_alignment_.isEmpty()) { column_alignment_ = DefaultColumnAlignment(); } emit ColumnAlignmentChanged(column_alignment_); // Background: QVariant q_playlistview_background_type = s.value(kSettingBackgroundImageType); BackgroundImageType background_type(Default); // bg_enabled should also be checked for backward compatibility (in releases // <= 1.0, there was just a boolean to activate/deactivate the background) QVariant bg_enabled = s.value("bg_enabled"); if (q_playlistview_background_type.isValid()) { background_type = static_cast<BackgroundImageType>( q_playlistview_background_type.toInt()); } else if (bg_enabled.isValid()) { if (bg_enabled.toBool()) { background_type = Default; } else { background_type = None; } } QString background_image_filename = s.value(kSettingBackgroundImageFilename).toString(); int blur_radius = s.value("blur_radius", kDefaultBlurRadius).toInt(); int opacity_level = s.value("opacity_level", kDefaultOpacityLevel).toInt(); // Check if background properties have changed. // We change properties only if they have actually changed, to avoid to call // set_background_image when it is not needed, as this will cause the fading // animation to start again. This also avoid to do useless // "force_background_redraw". if (background_image_filename != background_image_filename_ || background_type != background_image_type_ || blur_radius_ != blur_radius || opacity_level_ != opacity_level) { // Store background properties background_image_type_ = background_type; background_image_filename_ = background_image_filename; blur_radius_ = blur_radius; opacity_level_ = opacity_level; if (background_image_type_ == Custom) { set_background_image(QImage(background_image_filename)); } else if (background_image_type_ == AlbumCover) { set_background_image(current_song_cover_art_); } else { // User changed background image type to something that will not be // painted through paintEvent: reset all background images. // This avoid to use old (deprecated) images for fading when selecting // AlbumCover or Custom background image type later. set_background_image(QImage()); cached_scaled_background_image_ = QPixmap(); previous_background_image_ = QPixmap(); } setProperty("default_background_enabled", background_image_type_ == Default); emit BackgroundPropertyChanged(); force_background_redraw_ = true; } if(!s.value("click_edit_inline", true).toBool()) setEditTriggers(editTriggers() & ~QAbstractItemView::SelectedClicked); else setEditTriggers(editTriggers() | QAbstractItemView::SelectedClicked); }