README
[n9profile] / telenumdialog.cpp
1 #include "telenumdialog.h"
2 #include "telephonenumnewruledialog.h"
3 #include "ui_telenumdialog.h"
4 #include <QStringList>
5 #include <QtCore/QSettings>
6 #include <QtCore/QDebug> //Debug pro informace
7 #include <QtGui/QItemSelectionModel>
8 #include <QtGui/QStandardItemModel>
9
10 #include <QtGui/QMessageBox>
11 TeleNumDialog::TeleNumDialog(QWidget *parent) :
12     QDialog(parent),
13     ui(new Ui::TeleNumDialog)
14 {
15     ui->setupUi(this);
16 }
17
18 TeleNumDialog::~TeleNumDialog()
19 {
20     delete ui;
21 }
22
23 void TeleNumDialog::changeEvent(QEvent *e)
24 {
25     QDialog::changeEvent(e);
26     switch (e->type()) {
27     case QEvent::LanguageChange:
28         ui->retranslateUi(this);
29         break;
30     default:
31         break;
32     }
33 }
34
35 /** SetViews.
36 Set view models, behavior, mode and triggerrs
37 \param model_of_Telnum model of profiles
38 \param selModel_Telnum selection model for profiles
39 */
40 void TeleNumDialog::SetViews(QStandardItemModel *model_of_Telnum ,
41                                    QItemSelectionModel *selModel_Telnum)
42 {
43     ui->tableView->setModel(model_of_Telnum);
44     ui->tableView->setSelectionModel(selModel_Telnum);
45     ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
46     ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
47     ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
48     //ui->tableView_2->resizeColumnsToContents();
49     ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
50     //labels << tr("Name") << tr("Wifi name") << tr("Profile");
51 }
52
53 /** SetProfilenames.
54 Set profiles names
55 \param list_of_profiles_nf names of profiles
56 */
57 void TeleNumDialog::SetProfilenames(QStringList list_of_profiles_nf)
58 {
59     list_of_profiles = list_of_profiles_nf;
60 }
61
62 /** createNewRule()
63 Create new rule for location or wifi
64 */
65 void TeleNumDialog::createNewRule()
66 {
67
68 QStandardItemModel *model;
69 QList<QStandardItem *> listitems;
70
71 TelePhoneNumNewRuleDialog dialog(this);
72     model = (QStandardItemModel *) ui->tableView->model();//model je ted id loc
73
74         dialog.SetNameOfLabel("", QString(tr("New telephone rule")));
75
76         dialog.SetProfilenames(list_of_profiles); //dam tomu seznan pro výběr
77         dialog.SetModel(model);
78         int result = dialog.exec();
79         if(result)
80         {
81             //qDebug() <<  __FILE__ << ":" << __LINE__ << " " << __FUNCTION__ << "Nove providloooooooooo";
82             //nove jmeno pro pravidlo
83             listitems.append(new QStandardItem(dialog.GetNameOfRule()));//jmeno pravidla
84             listitems.append(new QStandardItem(dialog.GetTelNum()));//tel cislo
85             listitems.append(new QStandardItem(dialog.GetNameProfile()));//jmeno profilu
86             model->appendRow(listitems);
87            // emit s_change_model();//vyslu zmenu
88             //labels << tr("Name") << tr("Wifi name") << tr("Profile");davam tam id lokace prvna
89         }
90 }
91
92 /** on_pushButton_clicked()
93 Slot for button click
94 */
95 void TeleNumDialog::on_pushButton_clicked()
96 {
97 createNewRule();
98 }
99
100 /** on_tableView_clicked()
101 Slot for click on table
102 */
103 void TeleNumDialog::on_tableView_clicked(QModelIndex index)
104 {
105     Q_UNUSED(index)
106     //qDebug() << "In file:" <<  __FILE__ << ":" << "on line:" << __LINE__ << " in function:" << __FUNCTION__ << "kliknutu na idloc";
107
108     QItemSelectionModel *selModel = ui->tableView->selectionModel();
109     if(!selModel->hasSelection()) return;//no selection retirn
110     QModelIndexList list_of_selected = selModel->selectedIndexes(); //get selected
111     QStandardItemModel *model = (QStandardItemModel *) ui->tableView->model(); //model
112     int row = list_of_selected.at(0).row();//get row
113
114     QMessageBox msgBox;
115     msgBox.setIcon(QMessageBox::Information);
116     msgBox.setText(tr("Delete or modify number?"));
117     msgBox.setEscapeButton(QMessageBox::Cancel);
118     QPushButton *CancelButton =  msgBox.addButton(QMessageBox::Cancel);
119     QPushButton *DeleteButton = msgBox.addButton(tr("Delete"), QMessageBox::ActionRole);
120     QPushButton *modifyButton = msgBox.addButton(tr("Modify"),QMessageBox::DestructiveRole);
121
122     msgBox.exec(); //delete or modifi
123     if (msgBox.clickedButton() == DeleteButton) {
124
125         //qDebug() <<  __FILE__ << ":" << __LINE__ << " " << __FUNCTION__ << "bude se mazat pravidlo";
126         model->removeRow(row);
127         selModel->clearSelection();
128        // emit s_change_model(); //vyslu zmenu
129     }else if (msgBox.clickedButton() == modifyButton) {
130         TelePhoneNumNewRuleDialog dialog(this); //modifi
131         //labels << tr("Name") << tr("Wifi name") << tr("Profile");davam tam id lokace prvna
132         dialog.SetNameOfLabel(list_of_selected.at(1).data().toString(), QString(tr("Change profile for number: ")));
133         dialog.SetProfilenames(list_of_profiles); //dam tomu seznan pro výběr
134         dialog.SetNameOfRule(list_of_selected.at(0).data().toString()); //dam tomu jmeno pravidla
135         dialog.SetTelNum(list_of_selected.at(1).data().toString());
136         int result = dialog.exec();
137         if(result)
138         {
139             //nove jmeno pro pravidlo
140             model->item(list_of_selected.at(0).row(),list_of_selected.at(0).column())->setData(QVariant(dialog.GetNameOfRule()),Qt::DisplayRole);
141             //new name
142             model->item(list_of_selected.at(2).row(),list_of_selected.at(2).column())->setData(QVariant(dialog.GetNameProfile()),Qt::DisplayRole);
143            // emit s_change_model(); //vyslu zmenu
144         }
145                 selModel->clearSelection();
146     }else if (msgBox.clickedButton() == CancelButton) {
147                 selModel->clearSelection();
148         return;
149     }
150 }