File: LayerTreeDialog.cpp

package info (click to toggle)
sonic-visualiser 5.2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,744 kB
  • sloc: cpp: 158,888; ansic: 11,920; sh: 1,785; makefile: 517; xml: 64; perl: 31
file content (115 lines) | stat: -rw-r--r-- 3,245 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    Sonic Visualiser
    An audio file viewer and annotation editor.
    Centre for Digital Music, Queen Mary, University of London.
    This file copyright 2007 QMUL.
    
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.
*/

#include "LayerTreeDialog.h"

#include "LayerTree.h"
#include "view/PaneStack.h"

#include <QTreeView>
#include <QTableView>
#include <QGridLayout>
#include <QGroupBox>
#include <QDialogButtonBox>
#include <QHeaderView>
#include <QApplication>
#include <QScreen>

namespace sv {

LayerTreeDialog::LayerTreeDialog(PaneStack *stack, QWidget *parent) :
    QDialog(parent),
    m_paneStack(stack)
{
    setWindowTitle(tr("Layer Summary"));

    QGridLayout *grid = new QGridLayout;
    setLayout(grid);
    
    QGroupBox *modelBox = new QGroupBox;
    modelBox->setTitle(tr("Audio Data Sources"));
    grid->addWidget(modelBox, 0, 0);
    grid->setRowStretch(0, 15);

    QGridLayout *subgrid = new QGridLayout;
    modelBox->setLayout(subgrid);

    subgrid->setSpacing(0);
    subgrid->setContentsMargins(5, 5, 5, 5);

    m_modelView = new QTableView;
    subgrid->addWidget(m_modelView);

    m_modelView->verticalHeader()->hide();
#if (QT_VERSION >= 0x050000)
    m_modelView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
#else
    m_modelView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
#endif
    m_modelView->setShowGrid(false);

    m_modelModel = new ModelMetadataModel(m_paneStack, true);
    m_modelView->setModel(m_modelModel);

    QGroupBox *layerBox = new QGroupBox;
    layerBox->setTitle(tr("Panes and Layers"));
    grid->addWidget(layerBox, 1, 0);
    grid->setRowStretch(1, 20);

    subgrid = new QGridLayout;
    layerBox->setLayout(subgrid);

    subgrid->setSpacing(0);
    subgrid->setContentsMargins(5, 5, 5, 5);

    m_layerView = new QTreeView;
#if (QT_VERSION >= 0x050000)
    m_layerView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
#else
    m_layerView->header()->setResizeMode(QHeaderView::ResizeToContents);
#endif
    subgrid->addWidget(m_layerView);

    m_layerModel = new LayerTreeModel(m_paneStack);
    m_layerView->setModel(m_layerModel);
    m_layerView->expandAll();

    QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Close);
    connect(bb, SIGNAL(rejected()), this, SLOT(reject()));
    grid->addWidget(bb, 2, 0);
    grid->setRowStretch(2, 0);
    
    QScreen *screen = QGuiApplication::primaryScreen();
    QRect available = screen->availableGeometry();

    int width = available.width() / 2;
    int height = available.height() / 3;
    if (height < 370) {
        if (available.height() > 500) height = 370;
    }
    if (width < 500) {
        if (available.width() > 650) width = 500;
    }

    resize(width, height);
}

LayerTreeDialog::~LayerTreeDialog()
{
    delete m_layerModel;
}

} // end namespace sv