Листинг functionUser.cpp
functionUser.cpp
#include "functionUser.h"
#include "ui_workWindowPoster.h"
#include <stdlib.h>
FunctionUser::FunctionUser(QLinkedList<User *> *_users, User *_current, QWidget *parent):
FunctionGuest(_users, parent)
{
windowFunctionTabPostersHiring = new QWidget(parent);
windowFunctionTabPostersRent = new QWidget(parent);
uiMyTabPostersHiring.setupUi(windowFunctionTabPostersHiring);
uiMyTabPostersRent.setupUi(windowFunctionTabPostersRent);
uiTabPostersHiring.setupUi(uiMyTabPostersHiring.windowTabPosterHiring);
uiTabPostersRent.setupUi(uiMyTabPostersRent.windowTabPosterRent);
uiFunction.tabWidget->addTab(windowFunctionTabPostersHiring,
windowFunctionTabPostersHiring->windowTitle());
uiFunction.tabWidget->addTab(windowFunctionTabPostersRent,
windowFunctionTabPostersRent->windowTitle());
uiFunction.delAccountButton->show();
current = _current;
fillPosterTableHiring();
fillPosterTableRent();
viewButtonHiring(false);
viewButtonRent(false);
QObject::connect(uiMyTabPostersHiring.addPosterButton, SIGNAL(clicked()),
SLOT(slotAddPosterHiring()));
QObject::connect(uiMyTabPostersRent.addPosterButton, SIGNAL(clicked()),
SLOT(slotAddPosterRent()));
QObject::connect(uiMyTabPostersHiring.savePostersButton, SIGNAL(clicked()),
SLOT(slotSavePosterHiring()));
QObject::connect(uiMyTabPostersRent.savePostersButton, SIGNAL(clicked()),
SLOT(slotSavePosterRent()));
QObject::connect(uiMyTabPostersHiring.delPosterButton, SIGNAL(clicked()),
SLOT(slotDeleteMyPosterHiring()));
QObject::connect(uiMyTabPostersRent.delPosterButton, SIGNAL(clicked()),
SLOT(slotDeleteMyPosterRent()));
QObject::connect(uiMyTabPostersHiring.editPosterButton, SIGNAL(clicked()),
SLOT(slotEditPosterHiring()));
QObject::connect(uiMyTabPostersRent.editPosterButton, SIGNAL(clicked()),
SLOT(slotEditPosterRent()));
QObject::connect(uiFunction.delAccountButton, SIGNAL(clicked()),
SLOT(slotDelMyAccount()));
QObject::connect(uiTabPostersHiring.tableWidget, SIGNAL(cellClicked(int,int)),
SLOT(slotViewButtonHiring()));
QObject::connect(uiTabPostersRent.tableWidget, SIGNAL(cellClicked(int,int)),
SLOT(slotViewButtonRent()));
}
void FunctionUser::viewButtonHiring(const bool &fl)
{
if(fl)
{
uiMyTabPostersHiring.editPosterButton->setEnabled(true);
uiMyTabPostersHiring.delPosterButton->setEnabled(true);
}
else
{
uiMyTabPostersHiring.editPosterButton->setEnabled(false);
uiMyTabPostersHiring.delPosterButton->setEnabled(false);
}
}
void FunctionUser::viewButtonRent(const bool &fl)
{
if(fl)
{
uiMyTabPostersRent.editPosterButton->setEnabled(true);
uiMyTabPostersRent.delPosterButton->setEnabled(true);
}
else
{
uiMyTabPostersRent.editPosterButton->setEnabled(false);
uiMyTabPostersRent.delPosterButton->setEnabled(false);
}
}
void FunctionUser::slotViewButtonHiring()
{
viewButtonHiring(true);
}
void FunctionUser::slotViewButtonRent()
{
viewButtonRent(false);
}
void FunctionUser::fillPosterTableHiring()
{
QLinkedList<PosterHiring *>::Iterator passage;
passage = current->getPostersHiring()->begin();
while(passage != current->getPostersHiring()->end())
{
uiTabPostersHiring.tableWidget->insertRow(uiTabPostersHiring.tableWidget->rowCount());
addInTablePosterHiring(uiTabPostersHiring.tableWidget, *passage,
uiTabPostersHiring.tableWidget->rowCount() - 1);
++passage;
}
}
void FunctionUser::fillPosterTableRent()
{
QLinkedList<PosterRent *>::Iterator passage;
passage = current->getPostersRent()->begin();
while(passage != current->getPostersRent()->end())
{
uiTabPostersRent.tableWidget->insertRow(uiTabPostersRent.tableWidget->rowCount());
addInTablePosterRent(uiTabPostersRent.tableWidget, *passage,
uiTabPostersRent.tableWidget->rowCount() - 1);
++passage;
}
}
FunctionUser::~FunctionUser()
{
delete windowFunctionTabPostersHiring;
delete windowFunctionTabPostersRent;
}
void FunctionUser::readPosterHiring(PosterHiring *poster, const QString &login,
const QLineEdit *city, const QLineEdit *area, const QLineEdit *nPhone,
const QComboBox *nRoom, const QCheckBox *furtiture, const QCheckBox *animal,
const QComboBox *tenant, const QLineEdit *price)
{
poster->setLogin(login);
poster->setCity(city->text());
poster->setArea(area->text());
poster->setNumberPhone(nPhone->text());
poster->setSumRoom(nRoom->currentText());
poster->setFurtiture(furtiture->isChecked());
poster->setAnimal(animal->isChecked());
poster->setTenant(tenant->currentText());
poster->setPrice(price->text().toInt());
}
void FunctionUser::readPosterRent(PosterRent *poster, const QString &login,
const QLineEdit *city, const QLineEdit *area, const QLineEdit *street,
const QLineEdit *home, const QSpinBox *floor, const QLineEdit *nPhone,
const QComboBox *nRoom, const QCheckBox *furtiture, const QCheckBox *animal,
const QComboBox *tenant, const QLineEdit *price)
{
readPosterHiring(poster, login, city, area, nPhone, nRoom, furtiture, animal, tenant, price);
poster->setStreet(street->text());
poster->setHome(home->text());
poster->setNumberFloor(floor->value());
}
bool FunctionUser::isEmptyPosterHiring(const QLineEdit *city, const QLineEdit *area,
const QLineEdit *price)
{
if(city->text().isEmpty())
return false;
if(area->text().isEmpty())
return false;
if(price->text().isEmpty())
return false;
return true;
}
bool FunctionUser::isEmptyPosterRent(const QLineEdit *city, const QLineEdit *area,
const QLineEdit *street, const QLineEdit *home, const QLineEdit *price)
{
if(!isEmptyPosterHiring(city, area, price))
return false;
if(street->text().isEmpty())
return false;
if(home->text().isEmpty())
return false;
return true;
}
void FunctionUser::slotAddPosterHiring()
{
QDialog *window = new QDialog(this);
PosterHiring *poster;
Ui::workWindowPoster uiWindow;
Ui::posterHiring ui;
uiWindow.setupUi(window);
ui.setupUi(uiWindow.windowPoster);
QObject::connect(uiWindow.okButton, SIGNAL(clicked()), window, SLOT(accept()));
QObject::connect(uiWindow.cancelButton, SIGNAL(clicked()), window, SLOT(reject()));
while(window->exec())
{
if(isEmptyPosterHiring(ui.cityLineEdit, ui.areaLineEdit, ui.priceLineEdit))
{
poster = new PosterHiring;
readPosterHiring(poster, current->getLogin(), ui.cityLineEdit, ui.areaLineEdit,
ui.nPhoneLineEdit, ui.sRoomComboBox, ui.furtitureCheckBox, ui.animalCheckBox,
ui.tenantComboBox, ui.priceLineEdit);
uiTabPostersHiring.tableWidget->insertRow(uiTabPostersHiring.tableWidget
->rowCount());
addInTablePosterHiring(uiTabPostersHiring.tableWidget, poster,
uiTabPostersHiring.tableWidget->rowCount() - 1);
current->getPostersHiring()->push_back(poster);
break;
}
else QMessageBox::information(this, tr("clear string"), tr("SORRY, clear string"),
QMessageBox::Ok);
}
delete window;
viewButtonHiring(false);
uiTabPostersHiring.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::slotAddPosterRent()
{
QDialog *window = new QDialog(this);
PosterRent *poster;
Ui::workWindowPoster uiWindow;
Ui::posterRent ui;
uiWindow.setupUi(window);
ui.setupUi(uiWindow.windowPoster);
QObject::connect(uiWindow.okButton, SIGNAL(clicked()), window, SLOT(accept()));
QObject::connect(uiWindow.cancelButton, SIGNAL(clicked()), window, SLOT(reject()));
while(window->exec())
{
if(isEmptyPosterRent(ui.cityLineEdit, ui.areaLineEdit, ui.streetLineEdit, ui.nHomeLineEdit,
ui.priceLineEdit))
{
poster = new PosterRent;
readPosterRent(poster, current->getLogin(), ui.cityLineEdit, ui.areaLineEdit, streetLineEdit,
ui.nHomeLineEdit, ui.floorSpinBox, ui.nPhoneLineEdit, ui.sRoomComboBox,
ui.furtitureCheckBox, ui.animalCheckBox, ui.tenantComboBox, ui.priceLineEdit);
uiTabPostersRent.tableWidget->insertRow(uiTabPostersRent.tableWidget->rowCount());
addInTablePosterRent(uiTabPostersRent.tableWidget, poster,
uiTabPostersRent.tableWidget->rowCount() - 1);
current->getPostersRent()->push_back(poster);
break;
}
else QMessageBox::information(this, tr("clear string"), tr("SORRY, clear string"),
QMessageBox::Ok);
}
delete window;
viewButtonRent(false);
uiTabPostersRent.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::setPosterHiringInFile(PosterHiring *poster, QDataStream &in)
{
in << poster->getLogin();
in << poster->getCity();
in << poster->getArea();
in << poster->getNumberPhone();
in << poster->getPrice();
in << poster->getFurtiture();
in << poster->getAnimal();
in << poster->getSumRoom();
in << poster->getTenant();
}
void FunctionUser::setPosterRentInFile(PosterRent *poster, QDataStream &in)
{
setPosterHiringInFile(poster, in);
in << poster->getStreet();
in << poster->getHome();
in << poster->getNumberFloor();
}
void FunctionUser::slotSavePosterHiring()
{
QFile *file = new QFile("posterHiring.bin");
file->open(QIODevice::WriteOnly);
QDataStream in(file);
QLinkedList<User *>::Iterator passageUser = users->begin();
QLinkedList<PosterHiring *>::Iterator passagePoster;
while(passageUser != users->end())
{
passagePoster = (*passageUser)->getPostersHiring()->begin();
while(passagePoster != (*passageUser)->getPostersHiring()->end())
{
setPosterHiringInFile((*passagePoster), in);
++passagePoster;
}
++passageUser;
}
file->close();
delete file;
uiTabPostersHiring.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::slotSavePosterRent()
{
QFile *file = new QFile("posterRent.bin");
file->open(QIODevice::WriteOnly);
QDataStream in(file);
QLinkedList<User *>::Iterator passageUser = users->begin();
QLinkedList<PosterRent *>::Iterator passagePoster;
while(passageUser != users->end())
{
passagePoster = (*passageUser)->getPostersRent()->begin();
while(passagePoster != (*passageUser)->getPostersRent()->end())
{
setPosterRentInFile((*passagePoster), in);
++passagePoster;
}
++passageUser;
}
file->close();
delete file;
uiTabPostersRent.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::slotDeleteMyPosterHiring()
{
QLinkedList<PosterHiring *>::Iterator passage = current->getPostersHiring()->begin();
int row;
for(row = 0; row < uiTabPostersHiring.tableWidget->currentRow(); ++row)
++passage;
current->getPostersHiring()->erase(passage);
uiTabPostersHiring.tableWidget->removeRow(row);
viewButtonHiring(false);
uiTabPostersHiring.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::slotDeleteMyPosterRent()
{
QLinkedList<PosterRent *>::Iterator passage = current->getPostersRent()->begin();
int row;
for(row = 0; row < uiTabPostersRent.tableWidget->currentRow(); ++row)
++passage;
current->getPostersRent()->erase(passage);
uiTabPostersRent.tableWidget->removeRow(row);
viewButtonRent(false);
uiTabPostersRent.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::writePosterTiItemsHiring(PosterHiring *poster, QLineEdit *city,
QLineEdit *area, QLineEdit *nPhone, QComboBox *nRoom, QCheckBox *furtiture,
QCheckBox *animal, QComboBox *tenant, QLineEdit *price)
{
int i = 0;
city->setText(poster->getCity());
area->setText(poster->getArea());
nPhone->setText(poster->getNumberPhone());
for(i = 0; nRoom->currentText() != poster->getSumRoom(); nRoom->setCurrentIndex(++i));
furtiture->setChecked(poster->getFurtiture());
animal->setChecked(poster->getAnimal());
for(i = 0; tenant->currentText() != poster->getTenant(); tenant->setCurrentIndex(++i));
price->setText(QString("%1").arg(poster->getPrice()));
}
void FunctionUser::writePosterTiItemsRent(PosterRent *poster, QLineEdit *city, QLineEdit *area,
QLineEdit *street, QLineEdit *home, QSpinBox *floor, QLineEdit *nPhone,
QComboBox *nRoom, QCheckBox *furtiture, QCheckBox *animal,
QComboBox *tenant, QLineEdit *price)
{
writePosterTiItemsHiring(poster, city, area, nPhone, nRoom, furtiture, animal, tenant, price);
street->setText(poster->getStreet());
home->setText(poster->getHome());
floor->setValue(poster->getNumberFloor());
}
void FunctionUser::slotEditPosterHiring()
{
QLinkedList<PosterHiring *>::Iterator passage = current->getPostersHiring()->begin();
int row;
for(row = 0; row < uiTabPostersHiring.tableWidget->currentRow(); ++row)
++passage;
QDialog *window = new QDialog(this);
Ui::workWindowPoster uiWindow;
uiWindow.setupUi(window);
QObject::connect(uiWindow.okButton, SIGNAL(clicked()), window, SLOT(accept()));
QObject::connect(uiWindow.cancelButton, SIGNAL(clicked()), window, SLOT(reject()));
Ui::posterHiring ui;
ui.setupUi(uiWindow.windowPoster);
writePosterTiItemsHiring(*passage, ui.cityLineEdit, ui.areaLineEdit, ui.nPhoneLineEdit,
ui.sRoomComboBox, ui.furtitureCheckBox, ui.animalCheckBox, ui.tenantComboBox,
ui.priceLineEdit);
if(window->exec())
{
readPosterHiring(*passage, current->getLogin(),ui.cityLineEdit, ui.areaLineEdit,
ui.nPhoneLineEdit, ui.sRoomComboBox, ui.furtitureCheckBox, ui.animalCheckBox,
ui.tenantComboBox, ui.priceLineEdit);
uiTabPostersHiring.tableWidget->removeRow(row);
uiTabPostersHiring.tableWidget->insertRow(row);
addInTablePosterHiring(uiTabPostersHiring.tableWidget, *passage, row);
}
delete window;
viewButtonHiring(false);
uiTabPostersHiring.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::slotEditPosterRent()
{
QLinkedList<PosterRent *>::Iterator passage = current->getPostersRent()->begin();
int row;
for(row = 0; row < uiTabPostersRent.tableWidget->currentRow(); ++row)
++passage;
QDialog *window = new QDialog(this);
Ui::workWindowPoster uiWindow;
uiWindow.setupUi(window);
QObject::connect(uiWindow.okButton, SIGNAL(clicked()), window, SLOT(accept()));
QObject::connect(uiWindow.cancelButton, SIGNAL(clicked()), window, SLOT(reject()));
Ui::posterRent ui;
ui.setupUi(uiWindow.windowPoster);
writePosterTiItemsRent(*passage, ui.cityLineEdit, ui.areaLineEdit, ui.streetLineEdit,
ui.nHomeLineEdit, ui.floorSpinBox, ui.nPhoneLineEdit, ui.sRoomComboBox,
ui.furtitureCheckBox, ui.animalCheckBox, ui.tenantComboBox, ui.priceLineEdit);
if(window->exec())
{
readPosterRent(*passage, current->getLogin(),ui.cityLineEdit, ui.areaLineEdit,
ui.streetLineEdit, ui.nHomeLineEdit, ui.floorSpinBox, ui.nPhoneLineEdit,
ui.sRoomComboBox, ui.furtitureCheckBox, ui.animalCheckBox, ui.tenantComboBox,
ui.priceLineEdit);
uiTabPostersRent.tableWidget->removeRow(row);
uiTabPostersRent.tableWidget->insertRow(row);
addInTablePosterRent(uiTabPostersRent.tableWidget, *passage, row);
}
delete window;
viewButtonRent(false);
uiTabPostersRent.tableWidget->selectionModel()->clearSelection();
}
void FunctionUser::slotDelMyAccount()
{
QLinkedList<User *>::Iterator passage = users->begin();
while( (*passage) != current )
++passage;
users->erase(passage);
slotSavePosterHiring();
slotSavePosterRent();
exit(1);
}
Обсуждений еще не было, будьте первым... ↓↓↓
Популярное:
©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (386)
Почему 1285321 студент выбрали МегаОбучалку...
Система поиска информации
Мобильная версия сайта
Удобная навигация
Нет шокирующей рекламы