Fixed a minor bug wherein a new profile added, will always have its
[confmgr] / addprofile.cpp
1 #include "addprofile.h"
2 #include "ui_addprofile.h"
3 #include <QDebug>
4 #include <QMessageBox>
5
6 AddProfile::AddProfile(QWidget *parent) :
7     QWidget(parent),
8     ui(new Ui::AddProfile)
9 {
10     ui->setupUi(this);
11     connect(&mFrmAddStep, SIGNAL(StepAddedSuccessfully(Steps)),
12             this, SLOT(updateStepList(Steps)));
13     mFrmAddStep.setWindowFlags(mFrmAddStep.windowFlags() | Qt::Window);
14     bIsStepEdited = false;
15     iStepEditPosition = 0;
16     mFrmAddStep.setParent(this, Qt::Window);
17     mFrmAddStep.setAttribute(Qt::WA_Maemo5StackedWindow);
18 }
19
20 AddProfile::~AddProfile()
21 {
22     delete ui;
23 }
24
25 void AddProfile::on_addProCancel_clicked()
26 {
27     this->close();
28 }
29
30 void AddProfile::on_addProSave_clicked()
31 {
32     Profile p;
33     p.mName = ui->addProName->text();
34     p.mNoOfSteps = ui->addProStepList->count();
35     p.mSteps = mSteps;
36     emit(ProfileAddedSuccessfully(p));
37     this->close();
38 }
39
40 void AddProfile::showStepsUI()
41 {
42     mFrmAddStep.setParent(this, Qt::Window);
43     mFrmAddStep.clear();
44     mFrmAddStep.setAttribute(Qt::WA_Maemo5StackedWindow);
45     mFrmAddStep.show();
46 }
47
48 void AddProfile::updateStepList(Steps step)
49 {
50     QString text = "Value: " + step.value();
51     text += " || Delay: " + QString::number(step.delay());
52     if(bIsStepEdited)
53     {
54         // Reset the flag
55         bIsStepEdited = false;
56
57         // Remove the old one...
58         mSteps.removeAt(iStepEditPosition);
59         QString *pText = (QString*) ui->addProStepList->takeItem(ui->addProStepList->currentRow());
60         delete pText;
61
62         // update with the new one...
63         mSteps.insert(iStepEditPosition, step);
64         ui->addProStepList->insertItem(iStepEditPosition, text);
65     }
66     else
67     {
68         mSteps.append(step);
69         ui->addProStepList->addItem(text);
70     }
71     qDebug() << "updateStepList(): Text in List:  " << text;
72 }
73
74 void AddProfile::on_addProRemoveStep_clicked()
75 {
76     if(ui->addProStepList->count() <= 0 || ui->addProStepList->currentRow() < 0)
77     {
78         QMessageBox msg;
79         msg.setText("Please select a step first!");
80         msg.exec();
81         return;
82     }
83
84     mSteps.removeAt(ui->addProStepList->currentRow());
85     QString *pText = (QString*) ui->addProStepList->takeItem(ui->addProStepList->currentRow());
86     delete pText;
87 }
88
89 void AddProfile::clear()
90 {
91     mSteps.clear();
92     ui->addProStepList->clear();
93     ui->addProName->setText(QString::null);
94 }
95
96 void AddProfile::showProfile(Profile &p)
97 {
98     ui->addProName->setText(p.mName);
99     mSteps.clear();
100     mSteps = p.mSteps;
101     for(unsigned int i = 0; i < p.mNoOfSteps; i++)
102     {
103         Steps step = p.mSteps.at(i);
104         QString text = "Value: " + step.value();
105         text += " || Delay: " + QString::number(step.delay());
106         ui->addProStepList->addItem(text);
107     }
108     this->show();
109 }
110
111 void AddProfile::on_addProModifyStep_clicked()
112 {
113     if(ui->addProStepList->count() <= 0 || ui->addProStepList->currentRow() < 0)
114     {
115         QMessageBox msg;
116         msg.setText("Please add/select a step first!");
117         msg.exec();
118         return;
119     }
120     bIsStepEdited = true;
121     iStepEditPosition = ui->addProStepList->currentRow();
122     qDebug() << "Step to be edited: " << iStepEditPosition;
123     mFrmAddStep.setParent(this, Qt::Window);
124     mFrmAddStep.setAttribute(Qt::WA_Maemo5StackedWindow);
125     mFrmAddStep.showStep((Steps &)mSteps.at(iStepEditPosition));
126 }