Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 6.27 KB | None | 0 0
  1. Index: src/playlist/playlist.h
  2. ===================================================================
  3. --- src/playlist/playlist.h (revision 3450)
  4. +++ src/playlist/playlist.h (working copy)
  5. @@ -147,6 +147,7 @@
  6.                             PlaylistItemPtr a, PlaylistItemPtr b);
  7.  
  8.    static QString column_name(Column column);
  9. +  static QString abbreviated_column_name(Column column);
  10.    static bool column_is_editable(Playlist::Column column);
  11.    static bool set_column_value(Song& song, Column column, const QVariant& value);
  12.  
  13. @@ -247,6 +248,7 @@
  14.    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
  15.    bool setData(const QModelIndex &index, const QVariant &value, int role);
  16.    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
  17. +  bool setHeaderData(int section, Qt::Orientation orientation, const QVariant& value, int role = Qt::DisplayRole);
  18.    Qt::ItemFlags flags(const QModelIndex &index) const;
  19.    QStringList mimeTypes() const;
  20.    Qt::DropActions supportedDropActions() const;
  21. @@ -334,6 +336,8 @@
  22.    PlaylistFilter* proxy_;
  23.    Queue* queue_;
  24.  
  25. +  QMap<Column, QString> header_data_;
  26. +
  27.    QList<QModelIndex> temp_dequeue_change_indexes_;
  28.  
  29.    PlaylistBackend* backend_;
  30. Index: src/playlist/playlistheader.cpp
  31. ===================================================================
  32. --- src/playlist/playlistheader.cpp (revision 3450)
  33. +++ src/playlist/playlistheader.cpp (working copy)
  34. @@ -49,6 +49,7 @@
  35.  
  36.  void PlaylistHeader::contextMenuEvent(QContextMenuEvent* e) {
  37.    menu_section_ = logicalIndexAt(e->pos());
  38. +  const Playlist::Column column = static_cast<Playlist::Column>(menu_section_);
  39.  
  40.    if (menu_section_ == -1 || (
  41.          menu_section_ == logicalIndex(0) && logicalIndex(1) == -1))
  42. @@ -56,7 +57,7 @@
  43.    else {
  44.      hide_action_->setVisible(true);
  45.  
  46. -    QString title(model()->headerData(menu_section_, Qt::Horizontal).toString());
  47. +    QString title(Playlist::column_name(column));
  48.      hide_action_->setText(tr("&Hide %1").arg(title));
  49.    }
  50.  
  51. @@ -70,7 +71,8 @@
  52.  }
  53.  
  54.  void PlaylistHeader::AddColumnAction(int index) {
  55. -  QString title(model()->headerData(index, Qt::Horizontal).toString());
  56. +  const Playlist::Column column = static_cast<Playlist::Column>(index);
  57. +  QString title(Playlist::column_name(column));
  58.  
  59.    QAction* action = menu_->addAction(title, show_mapper_, SLOT(map()));
  60.    action->setCheckable(true);
  61. Index: src/playlist/playlist.cpp
  62. ===================================================================
  63. --- src/playlist/playlist.cpp   (revision 3450)
  64. +++ src/playlist/playlist.cpp   (working copy)
  65. @@ -134,6 +134,14 @@
  66.        = (Qt::AlignRight | Qt::AlignVCenter);
  67.  
  68.    column_alignments_[Column_Score] = (Qt::AlignCenter);
  69. +  
  70. +  // initialize header data
  71. +  // note: requires column values to be sequential
  72. +  for (int i = Column_Title; i < ColumnCount; i++) {
  73. +    Column column = static_cast<Column>(i);
  74. +    header_data_[column] = Playlist::column_name(column);
  75. +  }
  76. +
  77.  }
  78.  
  79.  Playlist::~Playlist() {
  80. @@ -156,13 +164,23 @@
  81.    if (role != Qt::DisplayRole && role != Qt::ToolTipRole)
  82.      return QVariant();
  83.  
  84. -  QString name = column_name((Playlist::Column)section);
  85. +  const Column column = static_cast<Column>(section);
  86. +  const QString& name = header_data_[column];
  87.    if(name.size())
  88.      return name;
  89.  
  90.    return QVariant();
  91.  }
  92. +bool Playlist::setHeaderData (int section, Qt::Orientation orientation, const QVariant & value, int role) {
  93. +  const Column column = static_cast<Column>(section);
  94. +  
  95. +  if (value.type() != QVariant::String) {
  96. +    return false;
  97. +  }
  98.  
  99. +  header_data_[column] = value.toString();
  100. +  return true;
  101. +}
  102.  bool Playlist::column_is_editable(Playlist::Column column) {
  103.    switch(column) {
  104.      case Column_Title:
  105. @@ -1108,6 +1126,21 @@
  106.    return "";
  107.  }
  108.  
  109. +
  110. +QString Playlist::abbreviated_column_name(Column column) {
  111. +  const QString& column_name = Playlist::column_name(column);
  112. +  switch (column) {
  113. +    case Column_Disc:
  114. +    case Column_PlayCount:
  115. +    case Column_SkipCount:
  116. +    case Column_Track:
  117. +      return QString("%1#").arg(column_name[0]);
  118. +    default:
  119. +      return column_name;
  120. +  }
  121. +  return "";
  122. +}
  123. +
  124.  void Playlist::sort(int column, Qt::SortOrder order) {
  125.    if (ignore_sorting_)
  126.      return;
  127. Index: src/playlist/playlistview.h
  128. ===================================================================
  129. --- src/playlist/playlistview.h (revision 3450)
  130. +++ src/playlist/playlistview.h (working copy)
  131. @@ -121,6 +121,7 @@
  132.    void MaybeAutoscroll();
  133.    void InvalidateCachedCurrentPixmap();
  134.    void PlaylistDestroyed();
  135. +  void UpdateHeaderText(int logical_index, int old_size, int new_size);
  136.  
  137.    void SaveSettings();
  138.    void StretchChanged(bool stretch);
  139. Index: src/playlist/playlistview.cpp
  140. ===================================================================
  141. --- src/playlist/playlistview.cpp   (revision 3453)
  142. +++ src/playlist/playlistview.cpp   (working copy)
  143. @@ -101,6 +101,7 @@
  144.    connect(header_, SIGNAL(ColumnAlignmentChanged()), SLOT(SaveSettings()));
  145.    connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(StretchChanged(bool)));
  146.    connect(header_, SIGNAL(MouseEntered()), SLOT(RatingHoverOut()));
  147. +  connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(UpdateHeaderText(int,int,int)));
  148.  
  149.    inhibit_autoscroll_timer_->setInterval(kAutoscrollGraceTimeout * 1000);
  150.    inhibit_autoscroll_timer_->setSingleShot(true);
  151. @@ -840,6 +841,23 @@
  152.    // We'll get a SetPlaylist() soon
  153.  }
  154.  
  155. +void PlaylistView::UpdateHeaderText(int logical_index, int old_size, int new_size) {
  156. +  Q_UNUSED(old_size);
  157. +  
  158. +  const Playlist::Column column = static_cast<Playlist::Column>(logical_index);
  159. +  const QString& column_name = Playlist::column_name(column);
  160. +  
  161. +  if (model()) {
  162. +    // spaces added to make transition less abrupt
  163. +    if (header_->sectionSize(logical_index) < header_->fontMetrics().width(column_name + "  ")) {
  164. +      const QString& abbreviated_column_name = Playlist::abbreviated_column_name(column);
  165. +      model()->setHeaderData(logical_index, Qt::Horizontal, abbreviated_column_name);
  166. +    } else {
  167. +      model()->setHeaderData(logical_index, Qt::Horizontal, column_name);
  168. +    }
  169. +  }
  170. +}
  171. +
  172.  void PlaylistView::ReloadSettings() {
  173.    QSettings s;
  174.    s.beginGroup(Playlist::kSettingsGroup);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement