-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbank_main.cpp
79 lines (73 loc) · 4.07 KB
/
bank_main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "bank_main.h"
#include "ui_bank_main.h"
#include <QMessageBox>
#include <QPixmap>
#include <QFile>
#include <QTextStream>
Bank_Main::Bank_Main(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Bank_Main)
{
ui->setupUi(this);
QPixmap pix_login(":/icons/icons/login.png"); //obiekt, który przechowuję ścieżkę do ikonki z folderu "Zasoby/resources"
ui->label_login->setPixmap(pix_login); //ustawiam na etykietę "label_login" zdjęcie, które ma się wyświetlać
QPixmap pix_password(":/icons/icons/password_login.png"); //obiekt, który przechowuję ścieżkę do ikonki z folderu "Zasoby/resources"
ui->label_password->setPixmap(pix_password); //ustawiam na etykietę "label_password" zdjęcie, które ma się wyświetlać
QPixmap pix_bank(":/icons/icons/bank_main.png"); //obiekt, który przechowuję ścieżkę do ikonki z folderu "Zasoby/resources"
ui->label_bank_pic->setPixmap(pix_bank); //ustawiam na etykietę "label_bank_pic" zdjęcie, które ma się wyświetlać
this->setFixedSize(QSize(800, 600)); //ustawia rozmiar okienka logowania na nieskalowalny
this->setStyleSheet("background-color: grey");
ui->lineEdit_login->setStyleSheet("background-color: white");
ui->lineEdit_password->setStyleSheet("background-color: white");
}
Bank_Main::~Bank_Main()
{
delete ui;
}
void Bank_Main::checkLoginAndPassword()
{
QString login = ui->lineEdit_login->text(); //pobieram tekst, który jest wpisywany w "lineEdit_login"
QString password = ui->lineEdit_password->text(); //pobieram tekst, który jest wpisywany w "lineEdit_password"
QFile file(":/accounts/Konta/"+login+"/login_password.txt"); //obiekt ze ścieżką do pliku
if(!file.open(QFile::ReadOnly | QFile::Text)) //precyzuję jakie pliki otwieram
{
QMessageBox::warning(this, "warning", "Błędna nazwa użytkownika!");
ui->lineEdit_login->clear();
ui->lineEdit_password->clear();
}
else
{
int numberOfLine=0; //zmienna, która będzie odpowiadała za indeks tablicy
QTextStream in(&file); //pobiera adres obiektu "file"
QString loginLine=in.readLine(); //zmienna, do której przypisujemy linijkę z pliku
QString line[2]; //tablica 2-elementowa typu QString
while(!loginLine.isNull()) //pętla sprawdzająca, poniższe instrukcję, dopóki plik nie jest pusty
{
line[numberOfLine]=in.readLine(); //pierwszy indeks tablicy to pierwsza linijka w pliku tekstowym
if(login==line[numberOfLine]) //jezeli tekst z loginu (z lineEdit_login, patrz wyżej) jest identyczny jak 1 linijka w pliku, to inkrementujemy numer linii i wchodzimy w kolejnego ifa =)
numberOfLine++; //inkrementacja indeksu (czyli napisu w pliku tekstowym)
{
if(password==line[numberOfLine] && login.count(' ') != login.length() && password.count(' ') != password.length() ) //to samo co wyzej + sprawdzam, czy login i haslo nie jest puste, a nastepnie po spelnieniu warunku, chowamy glowny ekran logowania, tworzymy instancję, a następnie za pomocą polimorficznego wskaźnika odpalamy menu glowne
{
hide();
bankMenu = new Bank_Menu(this, login);
bankMenu->setAttribute( Qt::WA_DeleteOnClose );
bankMenu->show();
break; //wychodzimy z pętli
}
else //w przeciwnym wypadku pokazuje się komunikat, o złym loginie i haśle
{
QMessageBox::information(this, "Zaloguj","Hasło jest niepoprawne! Wpisz jeszcze raz");
ui->lineEdit_login->clear(); //czyszczę pole tekstowe
ui->lineEdit_password->clear(); //czyszczę pole tekstowe
break; //wychodzę z pętli
}
}
}
}
file.close(); //zamykamy plik
}
void Bank_Main::on_pushButton_zaloguj_clicked() //metoda powodująca odpalenie powyższej metody (checkLoginAndPassword)
{
checkLoginAndPassword();
}