File indexing completed on 2025-01-19 09:45:52
0001 /* 0002 SPDX-FileCopyrightText: 2009 Prakash Mohan <prakash.mohan@kdemail.net> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "observeradd.h" 0008 0009 #include "kstarsdata.h" 0010 0011 #include <QSqlTableModel> 0012 0013 ObserverAdd::ObserverAdd() 0014 { 0015 // Setting up the widget from the .ui file and adding it to the QDialog 0016 QWidget *widget = new QWidget; 0017 0018 ui.setupUi(widget); 0019 0020 QVBoxLayout *mainLayout = new QVBoxLayout; 0021 mainLayout->addWidget(widget); 0022 setLayout(mainLayout); 0023 0024 setWindowTitle(i18nc("@title:window", "Manage Observers")); 0025 0026 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); 0027 mainLayout->addWidget(buttonBox); 0028 connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); 0029 0030 ui.AddObserverB->setIcon(QIcon::fromTheme("list-add")); 0031 ui.RemoveObserverB->setIcon(QIcon::fromTheme("list-remove")); 0032 0033 // Load the observers list from the file 0034 loadObservers(); 0035 auto db = QSqlDatabase::database(KStarsData::Instance()->userdb()->connectionName()); 0036 QSqlTableModel *users = new QSqlTableModel(nullptr, db); 0037 users->setTable("user"); 0038 users->select(); 0039 ui.tableView->setModel(users); 0040 ui.tableView->setColumnHidden(0, true); 0041 ui.tableView->horizontalHeader()->resizeContentsPrecision(); 0042 ui.tableView->viewport()->update(); 0043 ui.AddObserverB->setEnabled(false); 0044 ui.RemoveObserverB->setEnabled(false); 0045 ui.tableView->setSelectionMode(QAbstractItemView::SingleSelection); 0046 // Make connections 0047 connect(ui.AddObserverB, SIGNAL(clicked()), this, SLOT(slotAddObserver())); 0048 connect(ui.RemoveObserverB, SIGNAL(clicked()), this, SLOT(slotRemoveObserver())); 0049 connect(ui.Name, SIGNAL(textChanged(QString)), this, SLOT(checkObserverInfo())); 0050 connect(ui.Surname, SIGNAL(textChanged(QString)), this, SLOT(checkObserverInfo())); 0051 //connect (ui.tableView->verticalHeader(),SIGNAL(sectionClicked(int)),this,SLOT(checkTableInfo())); 0052 connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(auxSlot())); 0053 } 0054 void ObserverAdd::auxSlot() 0055 { 0056 ui.RemoveObserverB->setEnabled(true); 0057 } 0058 0059 void ObserverAdd::checkObserverInfo() 0060 { 0061 if (ui.Name->text().isEmpty() || ui.Surname->text().isEmpty()) 0062 ui.AddObserverB->setEnabled(false); 0063 else 0064 ui.AddObserverB->setEnabled(true); 0065 } 0066 0067 void ObserverAdd::slotUpdateModel() 0068 { 0069 auto db = QSqlDatabase::database(KStarsData::Instance()->userdb()->connectionName()); 0070 QSqlTableModel *users = new QSqlTableModel(nullptr, db); 0071 users->setTable("user"); 0072 users->select(); 0073 ui.tableView->setModel(users); 0074 ui.tableView->setColumnHidden(0, true); 0075 ui.tableView->horizontalHeader()->resizeContentsPrecision(); 0076 ui.tableView->viewport()->update(); 0077 } 0078 0079 void ObserverAdd::slotRemoveObserver() 0080 { 0081 QModelIndex index = ui.tableView->currentIndex(); 0082 int nr = index.row(); 0083 QString s = ui.tableView->model()->data(ui.tableView->model()->index(nr, 0)).toString(); 0084 0085 KStarsData::Instance()->userdb()->DeleteObserver(s); 0086 ui.RemoveObserverB->setEnabled(false); 0087 slotUpdateModel(); 0088 } 0089 0090 void ObserverAdd::slotAddObserver() 0091 { 0092 if (KStarsData::Instance()->userdb()->FindObserver(ui.Name->text(), ui.Surname->text())) 0093 { 0094 if (OAL::warningOverwrite( 0095 i18n("Another Observer already exists with the given Name and Surname, Overwrite?")) == KMessageBox::No) 0096 return; 0097 } 0098 0099 KStarsData::Instance()->userdb()->AddObserver(ui.Name->text(), ui.Surname->text(), ui.Contact->text()); 0100 0101 //Reload observers into OAL::m_observers 0102 loadObservers(); 0103 // Reset the UI for a fresh addition 0104 ui.Name->clear(); 0105 ui.Surname->clear(); 0106 ui.Contact->clear(); 0107 slotUpdateModel(); 0108 } 0109 0110 void ObserverAdd::loadObservers() 0111 { 0112 KStarsData::Instance()->logObject()->readObservers(); 0113 }