Changeset 75


Ignore:
Timestamp:
01/16/08 21:00:16 (4 years ago)
Author:
roeland
Message:

Ticket #8

Location:
gui
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • gui/main_window.cpp

    r74 r75  
    44#include <QString> 
    55#include <QKeyEvent> 
     6#include <QHeaderView> 
    67 
    78#include "main_window.h" 
     
    2627        trayIcon->show(); 
    2728    } 
     29 
     30    //PlaylistView 
     31    setupPlaylistViewHeader(); 
     32    setupPlaylistViewMenu(); 
    2833 
    2934    // Status bar 
     
    156161} 
    157162 
     163void MainWindow::setupPlaylistViewMenu() 
     164{ 
     165    playlistTableViewMenu = new QMenu; 
     166 
     167    QAction *albumPlaylistViewAction = new QAction(tr("Album"), trayIconMenu); 
     168    albumPlaylistViewAction->setCheckable(true); 
     169    albumPlaylistViewAction->setChecked(true); 
     170    QAction *artistPlaylistViewAction = new QAction(tr("Artist"), trayIconMenu); 
     171    artistPlaylistViewAction->setCheckable(true); 
     172    artistPlaylistViewAction->setChecked(true); 
     173    QAction *titlePlaylistViewAction = new QAction(tr("Title"), trayIconMenu); 
     174    titlePlaylistViewAction->setCheckable(true); 
     175    titlePlaylistViewAction->setChecked(true); 
     176    QAction *timePlaylistViewAction = new QAction(tr("Time"), trayIconMenu); 
     177    timePlaylistViewAction->setCheckable(true); 
     178    timePlaylistViewAction->setChecked(true); 
     179    QAction *trackPlaylistViewAction = new QAction(tr("Track"), trayIconMenu); 
     180    trackPlaylistViewAction->setCheckable(true); 
     181    trackPlaylistViewAction->setChecked(true); 
     182 
     183    playlistTableViewMenu->addAction(albumPlaylistViewAction); 
     184    playlistTableViewMenu->addAction(artistPlaylistViewAction); 
     185    playlistTableViewMenu->addAction(titlePlaylistViewAction); 
     186    playlistTableViewMenu->addAction(timePlaylistViewAction); 
     187    playlistTableViewMenu->addAction(trackPlaylistViewAction); 
     188 
     189    connect(albumPlaylistViewAction, SIGNAL(toggled(bool)), this, SLOT(playListTableViewToggleAlbum(bool))); 
     190    connect(artistPlaylistViewAction, SIGNAL(toggled(bool)), this, SLOT(playListTableViewToggleArtist(bool))); 
     191    connect(timePlaylistViewAction, SIGNAL(toggled(bool)), this, SLOT(playListTableViewToggleTime(bool))); 
     192    connect(trackPlaylistViewAction, SIGNAL(toggled(bool)), this, SLOT(playListTableViewToggleTrack(bool))); 
     193    connect(titlePlaylistViewAction, SIGNAL(toggled(bool)), this, SLOT(playListTableViewToggleTitle(bool))); 
     194     
     195    //Restore state 
     196    QByteArray state = settings.value("playlistTableViewHeader").toByteArray(); 
     197 
     198    //Restore 
     199    if (!state.isEmpty()) { 
     200        playlistTableViewHeader->restoreState(state); 
     201        if (playlistTableViewHeader->isSectionHidden(0)) 
     202            titlePlaylistViewAction->setChecked(false); 
     203        if (playlistTableViewHeader->isSectionHidden(1)) 
     204            trackPlaylistViewAction->setChecked(false); 
     205        if (playlistTableViewHeader->isSectionHidden(2)) 
     206            albumPlaylistViewAction->setChecked(false); 
     207        if (playlistTableViewHeader->isSectionHidden(3)) 
     208            trackPlaylistViewAction->setChecked(false); 
     209        if (playlistTableViewHeader->isSectionHidden(4)) 
     210            timePlaylistViewAction->setChecked(false); 
     211    } 
     212} 
     213 
     214void MainWindow::setupPlaylistViewHeader() { 
     215    playlistTableViewHeader = playlistTableView->horizontalHeader(); 
     216 
     217    playlistTableViewHeader->setMovable(true); 
     218    playlistTableViewHeader->setResizeMode(QHeaderView::Interactive); 
     219    playlistTableViewHeader->setContextMenuPolicy(Qt::CustomContextMenu); 
     220     
     221    connect(playlistTableViewHeader, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(playlistTableViewContextMenuClicked())); 
     222} 
     223 
    158224void MainWindow::showPreferencesDialog() 
    159225{ 
     
    548614    mpd.setCrossfade(seconds); 
    549615} 
     616 
     617void MainWindow::playlistTableViewContextMenuClicked() 
     618{ 
     619    playlistTableViewMenu->exec(QCursor::pos()); 
     620} 
     621 
     622void MainWindow::playListTableViewToggleAlbum(bool visible) 
     623{ 
     624    playlistTableViewHeader->setSectionHidden(2, !visible); 
     625    settings.setValue("playlistTableViewHeader", playlistTableViewHeader->saveState()); 
     626} 
     627 
     628void MainWindow::playListTableViewToggleArtist(bool visible) 
     629{ 
     630    playlistTableViewHeader->setSectionHidden(1, !visible); 
     631    settings.setValue("playlistTableViewHeader", playlistTableViewHeader->saveState()); 
     632} 
     633 
     634void MainWindow::playListTableViewToggleTime(bool visible) 
     635{ 
     636    playlistTableViewHeader->setSectionHidden(3, !visible); 
     637    settings.setValue("playlistTableViewHeader", playlistTableViewHeader->saveState()); 
     638} 
     639 
     640void MainWindow::playListTableViewToggleTrack(bool visible) 
     641{ 
     642    playlistTableViewHeader->setSectionHidden(4, !visible); 
     643    settings.setValue("playlistTableViewHeader", playlistTableViewHeader->saveState()); 
     644} 
     645 
     646void MainWindow::playListTableViewToggleTitle(bool visible) 
     647{ 
     648    playlistTableViewHeader->setSectionHidden(0, !visible); 
     649    settings.setValue("playlistTableViewHeader", playlistTableViewHeader->saveState()); 
     650} 
  • gui/main_window.h

    r74 r75  
    77#include <QSystemTrayIcon> 
    88#include <QMenu> 
     9#include <QHeaderView> 
    910 
    1011#include "ui_main_window.h" 
     
    4344        QIcon icon; 
    4445        QLabel bitrateLabel; 
     46        QHeaderView *playlistTableViewHeader; 
    4547 
    4648        bool setupTrayIcon(); 
     49        void setupPlaylistViewMenu(); 
     50        void setupPlaylistViewHeader(); 
    4751        QAction *playPauseAction; 
    4852        QAction *stopAction; 
     
    5357        QMenu *trayIconMenu; 
    5458        QString toolTipText; 
     59        QMenu *playlistTableViewMenu; 
    5560 
    5661    private slots: 
     
    8186        void trayIconClicked(QSystemTrayIcon::ActivationReason reason); 
    8287        void crossfadingChanged(int seconds); 
     88        void playlistTableViewContextMenuClicked(); 
     89         
     90        void playListTableViewToggleAlbum(bool visible); 
     91        void playListTableViewToggleArtist(bool visible); 
     92        void playListTableViewToggleTrack(bool visible); 
     93        void playListTableViewToggleTime(bool visible); 
     94        void playListTableViewToggleTitle(bool visible); 
    8395}; 
    8496 
  • gui/main_window.ui

    r74 r75  
    428428        <item> 
    429429         <widget class="QTableView" name="playlistTableView" > 
     430          <property name="contextMenuPolicy" > 
     431           <enum>Qt::CustomContextMenu</enum> 
     432          </property> 
    430433          <property name="alternatingRowColors" > 
    431434           <bool>true</bool> 
  • gui/playlisttablemodel.cpp

    r52 r75  
    11#include <QPalette> 
     2#include <QModelIndex> 
    23 
    34#include "playlisttablemodel.h" 
     
    2223                return "Album"; 
    2324                break; 
     25            case 3: 
     26                return "Track"; 
     27                break; 
     28            case 4: 
     29                return "Time"; 
     30                break; 
    2431            default: 
    2532                break; 
     
    3744int PlaylistTableModel::columnCount(const QModelIndex &) const 
    3845{ 
    39     return 3; 
     46    return 5; 
    4047} 
    4148 
     
    6673            case 2: 
    6774                return song->album; 
     75                break; 
     76            case 3: 
     77                return song->track; 
     78                break; 
     79            case 4: 
     80                return song->time; 
    6881                break; 
    6982            default: 
Note: See TracChangeset for help on using the changeset viewer.