N9profile
[n9profile] / telenumdialog.cpp
diff --git a/telenumdialog.cpp b/telenumdialog.cpp
new file mode 100644 (file)
index 0000000..06542db
--- /dev/null
@@ -0,0 +1,150 @@
+#include "telenumdialog.h"
+#include "telephonenumnewruledialog.h"
+#include "ui_telenumdialog.h"
+#include <QStringList>
+#include <QtCore/QSettings>
+#include <QtCore/QDebug> //Debug pro informace
+#include <QtGui/QItemSelectionModel>
+#include <QtGui/QStandardItemModel>
+
+#include <QtGui/QMessageBox>
+TeleNumDialog::TeleNumDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::TeleNumDialog)
+{
+    ui->setupUi(this);
+}
+
+TeleNumDialog::~TeleNumDialog()
+{
+    delete ui;
+}
+
+void TeleNumDialog::changeEvent(QEvent *e)
+{
+    QDialog::changeEvent(e);
+    switch (e->type()) {
+    case QEvent::LanguageChange:
+        ui->retranslateUi(this);
+        break;
+    default:
+        break;
+    }
+}
+
+/** SetViews.
+Set view models, behavior, mode and triggerrs
+\param model_of_Telnum model of profiles
+\param selModel_Telnum selection model for profiles
+*/
+void TeleNumDialog::SetViews(QStandardItemModel *model_of_Telnum ,
+                                   QItemSelectionModel *selModel_Telnum)
+{
+    ui->tableView->setModel(model_of_Telnum);
+    ui->tableView->setSelectionModel(selModel_Telnum);
+    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
+    ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
+    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+    //ui->tableView_2->resizeColumnsToContents();
+    ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
+    //labels << tr("Name") << tr("Wifi name") << tr("Profile");
+}
+
+/** SetProfilenames.
+Set profiles names
+\param list_of_profiles_nf names of profiles
+*/
+void TeleNumDialog::SetProfilenames(QStringList list_of_profiles_nf)
+{
+    list_of_profiles = list_of_profiles_nf;
+}
+
+/** createNewRule()
+Create new rule for location or wifi
+*/
+void TeleNumDialog::createNewRule()
+{
+
+QStandardItemModel *model;
+QList<QStandardItem *> listitems;
+
+TelePhoneNumNewRuleDialog dialog(this);
+    model = (QStandardItemModel *) ui->tableView->model();//model je ted id loc
+
+        dialog.SetNameOfLabel("", QString(tr("New telephone rule")));
+
+        dialog.SetProfilenames(list_of_profiles); //dam tomu seznan pro výběr
+        dialog.SetModel(model);
+        int result = dialog.exec();
+        if(result)
+        {
+            //qDebug() <<  __FILE__ << ":" << __LINE__ << " " << __FUNCTION__ << "Nove providloooooooooo";
+            //nove jmeno pro pravidlo
+            listitems.append(new QStandardItem(dialog.GetNameOfRule()));//jmeno pravidla
+            listitems.append(new QStandardItem(dialog.GetTelNum()));//tel cislo
+            listitems.append(new QStandardItem(dialog.GetNameProfile()));//jmeno profilu
+            model->appendRow(listitems);
+           // emit s_change_model();//vyslu zmenu
+            //labels << tr("Name") << tr("Wifi name") << tr("Profile");davam tam id lokace prvna
+        }
+}
+
+/** on_pushButton_clicked()
+Slot for button click
+*/
+void TeleNumDialog::on_pushButton_clicked()
+{
+createNewRule();
+}
+
+/** on_tableView_clicked()
+Slot for click on table
+*/
+void TeleNumDialog::on_tableView_clicked(QModelIndex index)
+{
+    Q_UNUSED(index)
+    //qDebug() << "In file:" <<  __FILE__ << ":" << "on line:" << __LINE__ << " in function:" << __FUNCTION__ << "kliknutu na idloc";
+
+    QItemSelectionModel *selModel = ui->tableView->selectionModel();
+    if(!selModel->hasSelection()) return;//no selection retirn
+    QModelIndexList list_of_selected = selModel->selectedIndexes(); //get selected
+    QStandardItemModel *model = (QStandardItemModel *) ui->tableView->model(); //model
+    int row = list_of_selected.at(0).row();//get row
+
+    QMessageBox msgBox;
+    msgBox.setIcon(QMessageBox::Information);
+    msgBox.setText(tr("Delete or modify number?"));
+    msgBox.setEscapeButton(QMessageBox::Cancel);
+    QPushButton *CancelButton =  msgBox.addButton(QMessageBox::Cancel);
+    QPushButton *DeleteButton = msgBox.addButton(tr("Delete"), QMessageBox::ActionRole);
+    QPushButton *modifyButton = msgBox.addButton(tr("Modify"),QMessageBox::DestructiveRole);
+
+    msgBox.exec(); //delete or modifi
+    if (msgBox.clickedButton() == DeleteButton) {
+
+        //qDebug() <<  __FILE__ << ":" << __LINE__ << " " << __FUNCTION__ << "bude se mazat pravidlo";
+        model->removeRow(row);
+        selModel->clearSelection();
+       // emit s_change_model(); //vyslu zmenu
+    }else if (msgBox.clickedButton() == modifyButton) {
+        TelePhoneNumNewRuleDialog dialog(this); //modifi
+        //labels << tr("Name") << tr("Wifi name") << tr("Profile");davam tam id lokace prvna
+        dialog.SetNameOfLabel(list_of_selected.at(1).data().toString(), QString(tr("Change profile for number: ")));
+        dialog.SetProfilenames(list_of_profiles); //dam tomu seznan pro výběr
+        dialog.SetNameOfRule(list_of_selected.at(0).data().toString()); //dam tomu jmeno pravidla
+        dialog.SetTelNum(list_of_selected.at(1).data().toString());
+        int result = dialog.exec();
+        if(result)
+        {
+            //nove jmeno pro pravidlo
+            model->item(list_of_selected.at(0).row(),list_of_selected.at(0).column())->setData(QVariant(dialog.GetNameOfRule()),Qt::DisplayRole);
+            //new name
+            model->item(list_of_selected.at(2).row(),list_of_selected.at(2).column())->setData(QVariant(dialog.GetNameProfile()),Qt::DisplayRole);
+           // emit s_change_model(); //vyslu zmenu
+        }
+                selModel->clearSelection();
+    }else if (msgBox.clickedButton() == CancelButton) {
+                selModel->clearSelection();
+        return;
+    }
+}