Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: src/playlist/playlist.h
- ===================================================================
- --- src/playlist/playlist.h (revision 3450)
- +++ src/playlist/playlist.h (working copy)
- @@ -147,6 +147,7 @@
- PlaylistItemPtr a, PlaylistItemPtr b);
- static QString column_name(Column column);
- + static QString abbreviated_column_name(Column column);
- static bool column_is_editable(Playlist::Column column);
- static bool set_column_value(Song& song, Column column, const QVariant& value);
- @@ -247,6 +248,7 @@
- QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
- bool setData(const QModelIndex &index, const QVariant &value, int role);
- QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
- + bool setHeaderData(int section, Qt::Orientation orientation, const QVariant& value, int role = Qt::DisplayRole);
- Qt::ItemFlags flags(const QModelIndex &index) const;
- QStringList mimeTypes() const;
- Qt::DropActions supportedDropActions() const;
- @@ -334,6 +336,8 @@
- PlaylistFilter* proxy_;
- Queue* queue_;
- + QMap<Column, QString> header_data_;
- +
- QList<QModelIndex> temp_dequeue_change_indexes_;
- PlaylistBackend* backend_;
- Index: src/playlist/playlistheader.cpp
- ===================================================================
- --- src/playlist/playlistheader.cpp (revision 3450)
- +++ src/playlist/playlistheader.cpp (working copy)
- @@ -49,6 +49,7 @@
- void PlaylistHeader::contextMenuEvent(QContextMenuEvent* e) {
- menu_section_ = logicalIndexAt(e->pos());
- + const Playlist::Column column = static_cast<Playlist::Column>(menu_section_);
- if (menu_section_ == -1 || (
- menu_section_ == logicalIndex(0) && logicalIndex(1) == -1))
- @@ -56,7 +57,7 @@
- else {
- hide_action_->setVisible(true);
- - QString title(model()->headerData(menu_section_, Qt::Horizontal).toString());
- + QString title(Playlist::column_name(column));
- hide_action_->setText(tr("&Hide %1").arg(title));
- }
- @@ -70,7 +71,8 @@
- }
- void PlaylistHeader::AddColumnAction(int index) {
- - QString title(model()->headerData(index, Qt::Horizontal).toString());
- + const Playlist::Column column = static_cast<Playlist::Column>(index);
- + QString title(Playlist::column_name(column));
- QAction* action = menu_->addAction(title, show_mapper_, SLOT(map()));
- action->setCheckable(true);
- Index: src/playlist/playlist.cpp
- ===================================================================
- --- src/playlist/playlist.cpp (revision 3450)
- +++ src/playlist/playlist.cpp (working copy)
- @@ -134,6 +134,14 @@
- = (Qt::AlignRight | Qt::AlignVCenter);
- column_alignments_[Column_Score] = (Qt::AlignCenter);
- +
- + // initialize header data
- + // note: requires column values to be sequential
- + for (int i = Column_Title; i < ColumnCount; i++) {
- + Column column = static_cast<Column>(i);
- + header_data_[column] = Playlist::column_name(column);
- + }
- +
- }
- Playlist::~Playlist() {
- @@ -156,13 +164,23 @@
- if (role != Qt::DisplayRole && role != Qt::ToolTipRole)
- return QVariant();
- - QString name = column_name((Playlist::Column)section);
- + const Column column = static_cast<Column>(section);
- + const QString& name = header_data_[column];
- if(name.size())
- return name;
- return QVariant();
- }
- +bool Playlist::setHeaderData (int section, Qt::Orientation orientation, const QVariant & value, int role) {
- + const Column column = static_cast<Column>(section);
- +
- + if (value.type() != QVariant::String) {
- + return false;
- + }
- + header_data_[column] = value.toString();
- + return true;
- +}
- bool Playlist::column_is_editable(Playlist::Column column) {
- switch(column) {
- case Column_Title:
- @@ -1108,6 +1126,21 @@
- return "";
- }
- +
- +QString Playlist::abbreviated_column_name(Column column) {
- + const QString& column_name = Playlist::column_name(column);
- + switch (column) {
- + case Column_Disc:
- + case Column_PlayCount:
- + case Column_SkipCount:
- + case Column_Track:
- + return QString("%1#").arg(column_name[0]);
- + default:
- + return column_name;
- + }
- + return "";
- +}
- +
- void Playlist::sort(int column, Qt::SortOrder order) {
- if (ignore_sorting_)
- return;
- Index: src/playlist/playlistview.h
- ===================================================================
- --- src/playlist/playlistview.h (revision 3450)
- +++ src/playlist/playlistview.h (working copy)
- @@ -121,6 +121,7 @@
- void MaybeAutoscroll();
- void InvalidateCachedCurrentPixmap();
- void PlaylistDestroyed();
- + void UpdateHeaderText(int logical_index, int old_size, int new_size);
- void SaveSettings();
- void StretchChanged(bool stretch);
- Index: src/playlist/playlistview.cpp
- ===================================================================
- --- src/playlist/playlistview.cpp (revision 3453)
- +++ src/playlist/playlistview.cpp (working copy)
- @@ -101,6 +101,7 @@
- connect(header_, SIGNAL(ColumnAlignmentChanged()), SLOT(SaveSettings()));
- connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(StretchChanged(bool)));
- connect(header_, SIGNAL(MouseEntered()), SLOT(RatingHoverOut()));
- + connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(UpdateHeaderText(int,int,int)));
- inhibit_autoscroll_timer_->setInterval(kAutoscrollGraceTimeout * 1000);
- inhibit_autoscroll_timer_->setSingleShot(true);
- @@ -840,6 +841,23 @@
- // We'll get a SetPlaylist() soon
- }
- +void PlaylistView::UpdateHeaderText(int logical_index, int old_size, int new_size) {
- + Q_UNUSED(old_size);
- +
- + const Playlist::Column column = static_cast<Playlist::Column>(logical_index);
- + const QString& column_name = Playlist::column_name(column);
- +
- + if (model()) {
- + // spaces added to make transition less abrupt
- + if (header_->sectionSize(logical_index) < header_->fontMetrics().width(column_name + " ")) {
- + const QString& abbreviated_column_name = Playlist::abbreviated_column_name(column);
- + model()->setHeaderData(logical_index, Qt::Horizontal, abbreviated_column_name);
- + } else {
- + model()->setHeaderData(logical_index, Qt::Horizontal, column_name);
- + }
- + }
- +}
- +
- void PlaylistView::ReloadSettings() {
- QSettings s;
- s.beginGroup(Playlist::kSettingsGroup);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement