e8cd37d78b2c41b4dbad522f1b3a8100abf89eb8
[mussa.git] / qui / mussa_setup_dialog / SequenceSetupFrame.cpp
1 #include <QFrame>
2 #include <QList>
3 #include <QVBoxLayout>
4
5 #include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
6 #include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
7
8
9 SequenceSetupFrame::SequenceSetupFrame(QWidget *parent)
10   : QWidget(parent),
11     sequenceLayout(0),
12     seqCount(0)//,
13     //seqList(0)
14 {
15
16   // frame
17   sequenceFrame = new QFrame;
18   sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
19   
20   sequenceLayout = new QVBoxLayout;
21
22   
23
24   sequenceFrame->setLayout(sequenceLayout);
25
26   QVBoxLayout *mainLayout = new QVBoxLayout;
27   mainLayout->addWidget(sequenceFrame);
28   setLayout(mainLayout);
29
30 }
31
32 SequenceSetupFrame::SequenceSetupFrame(const SequenceSetupFrame &ssf)
33   : sequenceFrame(ssf.sequenceFrame),
34     sequenceLayout(ssf.sequenceLayout),
35     seqCount(ssf.seqCount)//,
36     //seqList(0)
37 {
38 }
39
40 void SequenceSetupFrame::changeSequenceCount(int newSeqCount)
41 {
42   seqCount = newSeqCount;
43   setupSequences(seqCount);
44 }
45
46 void SequenceSetupFrame::setupSequences(int newSeqCount)
47 {
48   const int curSeqCount = seqList.size();
49
50   if (curSeqCount == newSeqCount)
51   {
52     return;
53   }
54   else if (curSeqCount < newSeqCount)
55   {
56     int numSeqsToAdd = newSeqCount - curSeqCount;
57
58     for (int i = 1; i <= numSeqsToAdd; i++)
59     {
60       SequenceSetupWidget *seq = new SequenceSetupWidget;
61       seqList.push_back(*seq);
62       sequenceLayout->addWidget(seq);
63     } 
64   }
65   else if (curSeqCount > newSeqCount)
66   {
67     int numSeqsToRemove = curSeqCount - newSeqCount;
68     
69     if (numSeqsToRemove > curSeqCount)
70     {
71       numSeqsToRemove = curSeqCount;
72     }
73     
74     //SequenceSetupWidget *seqWidget = 0;
75     for (int i=1; i <= numSeqsToRemove; i++)
76     {
77       SequenceSetupWidget& seqWidget(seqList.back());
78       sequenceLayout->removeWidget(&seqWidget);
79       seqList.pop_back();
80       //delete seqWidget;
81     }
82
83   }
84   
85
86 }