Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
598d076
Server 0.1
Feb 26, 2025
aef6a59
ver. 1.0
EDeev Feb 26, 2025
3fcbea4
version 0.2
MN1ght Feb 26, 2025
c611ebd
roles
EDeev Feb 26, 2025
caab2ee
git struct
EDeev Feb 26, 2025
e1ea24a
ver. 0.220
Feb 27, 2025
27b08f5
Delete echoServer.pro
EDeev Feb 27, 2025
e102a04
Delete func2serv.cpp
RayStar-k Feb 27, 2025
e2dbd9a
Delete func2serv.h
RayStar-k Feb 27, 2025
b39773d
Delete main.cpp
RayStar-k Feb 27, 2025
68a3d00
Delete mytcpserver.cpp
RayStar-k Feb 27, 2025
0d35491
Delete mytcpserver.h
RayStar-k Feb 27, 2025
0f7daa0
Delete Cтруктура Git.png
EDeev Feb 27, 2025
bfef606
Delete Распределение ролей.png
EDeev Feb 27, 2025
8654384
Delete Схема базы данных.jpg
EDeev Feb 27, 2025
a3d3c87
ver. 1
EDeev Feb 27, 2025
a1ef6d6
ver. 1
EDeev Feb 27, 2025
e9a2ee4
ver. 1
EDeev Feb 27, 2025
77a2ba3
server 0.320
Mar 2, 2025
75bcbfa
ver. from 06.03
EDeev Mar 6, 2025
a2faa74
Delete docs/Распределение ролей.png
EDeev Mar 6, 2025
c660bc8
ver. from 06.03
EDeev Mar 6, 2025
325a440
Update mytcpserver.cpp
PetrSaprykin Mar 7, 2025
1a798b7
Добавил пару комментов для Руслана в func2serv.cpp
PetrSaprykin Mar 11, 2025
de060af
Create static.yml
EDeev Mar 20, 2025
6539590
Doxyfile
EDeev Mar 20, 2025
3cef921
Update Doxyfile
EDeev Mar 20, 2025
8563532
Update static.yml
EDeev Mar 20, 2025
cb4974f
Update func2serv.h
Starkcrimea Mar 20, 2025
4bb9204
Server 0.321
Mar 26, 2025
b3f978e
Delete Server 0.321 directory
RayStar-k Mar 26, 2025
bd875e2
Add files via upload
Mar 26, 2025
a6001f7
Server 0.332
RayStar-k Apr 26, 2025
c8eb8ec
Server 0.342
RayStar-k Apr 26, 2025
870ec58
Add files via upload
PetrSaprykin Apr 26, 2025
b879a0f
Delete Server 0.342 directory
RayStar-k Apr 26, 2025
04335d3
Delete Server 0.321 directory
RayStar-k Apr 26, 2025
a1707eb
Delete Server 0.332 directory
RayStar-k Apr 26, 2025
84f966b
server 0.321
RayStar-k Apr 26, 2025
ff69118
server 0.332
RayStar-k Apr 26, 2025
f4301cf
server 0.342
RayStar-k Apr 26, 2025
1686c51
server 0.352
RayStar-k May 3, 2025
011815f
Server 0.4
RayStar-k May 3, 2025
6f2c3b2
server 0.5
RayStar-k May 4, 2025
68fcfeb
Delete functions_for_client.cpp
EDeev May 4, 2025
6e28a35
Merge pull request #4 from New-Ds/docs
RayStar-k May 4, 2025
19a5a73
Merge pull request #2 from New-Ds/client
EDeev May 4, 2025
16740eb
Merge pull request #3 from New-Ds/server
EDeev May 4, 2025
290d818
server 0.6
RayStar-k May 9, 2025
5dd554e
Merge pull request #6 from New-Ds/server
EDeev May 10, 2025
a1d893b
Merge pull request #5 from New-Ds/client
EDeev May 10, 2025
732ce30
Update static.yml
Starkcrimea May 13, 2025
3aca7be
Update static.yml
Starkcrimea May 13, 2025
e994c7e
Update static.yml
Starkcrimea May 13, 2025
d2a437f
Update static.yml
Starkcrimea May 13, 2025
73954b1
doxygen
Starkcrimea May 13, 2025
ea2f3f2
Обновление main: добавлены файлы с комментариями
Starkcrimea May 13, 2025
676994a
Update static.yml
Starkcrimea May 13, 2025
3a40794
Новый doxygen
Starkcrimea May 13, 2025
f089b87
Update Doxyfile
Starkcrimea May 13, 2025
9072e86
Добавлены Doxygen-комментарии к заголовочным файлам
Starkcrimea May 13, 2025
4ba9f75
Добавлены Doxygen-комментарии к заголовочным файлам
Starkcrimea May 13, 2025
447418f
server.7
RayStar-k May 17, 2025
1a5688f
Merge pull request #7 from New-Ds/server
EDeev May 17, 2025
f1351f9
Merge pull request #8 from New-Ds/client
EDeev May 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
52 changes: 52 additions & 0 deletions .github/workflows/static.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Deploy static content to Pages

on:
push:
branches:
- "main" # или ваша основная ветка, например, "main"
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Pages
uses: actions/configure-pages@v4

# Устанавливаем Doxygen
- name: Install Doxygen
run: sudo apt install doxygen && doxygen --version

# Устанавливаем Graphviz (если нужно для генерации графиков в Doxygen)
- name: Install Graphviz
run: sudo apt install graphviz

# Создаем документацию
- name: Create documentation
run: doxygen

# Загрузка артефакта (с учетом структуры папок)
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './docs/doxygen/html' # Указываем правильный путь к сгенерированной документации

# Разворачиваем на GitHub Pages
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
48 changes: 48 additions & 0 deletions Doxyfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Основные настройки
PROJECT_NAME = "My Project" # Название проекта
PROJECT_BRIEF = "Project description" # Краткое описание проекта
OUTPUT_DIRECTORY = docs/doxygen # Папка для вывода документации
CREATE_SUBDIRS = NO # Не создавать подкаталоги для выходных файлов
EXTRACT_ALL = YES # Извлекать все комментарии (даже если нет тегов Doxygen)
EXTRACT_PRIVATE = YES # Включать приватные члены
EXTRACT_STATIC = YES # Включать статические функции и переменные
INLINE_SOURCES = YES # Включать исходный код в документацию
FILE_PATTERNS = *.h *.cpp # Паттерны для поиска исходных файлов
RECURSIVE = YES # Рекурсивный поиск по каталогам
ENABLE_PREPROCESSING = YES # Разрешить обработку препроцессора
MACRO_EXPANSION = YES # Разрешить расширение макросов
TCL_SUBST = YES # Разрешить обработку команд TCL

# Формат вывода документации
GENERATE_HTML = YES # Генерация HTML документации
HTML_OUTPUT = html # Папка для вывода HTML файлов
HTML_EXTRA_STYLESHEET = "" # Кастомный файл стилей (если есть)

# Формат LaTeX (если нужен)
GENERATE_LATEX = YES # Отключить генерацию LaTeX документации


# Использование Doxygen комментариев
ALIASES = "myalias=somealias" # Можно настроить пользовательские алиасы (не обязательно)
TEMPLATE_RELATIONS = YES # Включить создание связей между файлами и классами
HAVE_DOT = YES # Использовать Graphviz для генерации графиков и диаграмм

# Функции и классы
EXTRACT_LOCAL_CLASSES = YES # Включать локальные классы в документацию
EXTRACT_LOCAL_METHODS = YES # Включать локальные методы в документацию

# Включение/выключение различных типов документации
SHOW_FILES = YES # Показать файлы в документации
SHOW_NAMESPACES = YES # Показать пространства имен
SHOW_INCLUDE_FILES = YES # Показать включаемые файлы

# Визуальные параметры
HTML_DYNAMIC_MENUS = YES # Включить динамические меню в HTML документации
HTML_COLORSTYLE = "yes" # Включить стилизацию документации

# Включение тэгов Doxygen в комментариях
JAVADOC_AUTOBRIEF = YES # Автоматически добавлять краткое описание в JavaDoc стиле
DISTRIBUTE_GROUPS = YES # Разрешить группировку документации

# Путь к исходным файлам
INPUT = ./server ./client # Путь к вашим исходным файлам
85 changes: 59 additions & 26 deletions client/Singleton.h
Original file line number Diff line number Diff line change
@@ -1,53 +1,86 @@
#ifndef SINGLETON_H
#define SINGLETON_H

#include <QObject>
#include <QTcpSocket>
#include <QtNetwork>
#include <QByteArray>
#include <QDebug>
#include <QStringList>


class ClientSingleton;


/**
* @brief Разрушитель Singleton для корректного удаления ClientSingleton.
*/
class ClientSingletonDestroyer {
private:
ClientSingleton * p_instance;
public:
~ClientSingletonDestroyer();
void initialize(ClientSingleton * p);
private:
ClientSingleton* p_instance; /**< Указатель на экземпляр ClientSingleton */
public:
/**
* @brief Деструктор. Удаляет экземпляр ClientSingleton.
*/
~ClientSingletonDestroyer();

/**
* @brief Инициализирует указатель на Singleton.
* @param p Указатель на экземпляр ClientSingleton.
*/
void initialize(ClientSingleton* p);
};



class ClientSingleton : public QObject
{
/**
* @brief Сетевой клиент, реализующий паттерн Singleton.
*
* Используется для подключения к серверу, отправки и получения данных.
*/
class ClientSingleton : public QObject {
Q_OBJECT

private:
static ClientSingleton * p_instance;
static ClientSingletonDestroyer destroyer;
QTcpSocket* socket;
static ClientSingleton* p_instance; /**< Указатель на экземпляр Singleton */
static ClientSingletonDestroyer destroyer; /**< Объект-разрушитель */
QTcpSocket* socket; /**< Сокет для соединения с сервером */

protected:
ClientSingleton(); //соед с сервером
~ClientSingleton(); // закрыть соед
ClientSingleton(const ClientSingleton&) = delete;
ClientSingleton& operator=(const ClientSingleton&) = delete;
/**
* @brief Конструктор по умолчанию. Устанавливает соединение с сервером.
*/
ClientSingleton();

/**
* @brief Деструктор. Закрывает соединение с сервером.
*/
~ClientSingleton();

ClientSingleton(const ClientSingleton&) = delete; /**< Запрещено копирование */
ClientSingleton& operator=(const ClientSingleton&) = delete; /**< Запрещено присваивание */

friend class ClientSingletonDestroyer;

public:
/**
* @brief Получить экземпляр Singleton.
* @return Ссылка на экземпляр ClientSingleton.
*/
static ClientSingleton& getInstance();
QByteArray send_msg(QStringList);

/**
* @brief Отправляет сообщение серверу.
* @param list Список строк с данными для отправки.
* @return Ответ от сервера в виде QByteArray.
*/
QByteArray send_msg(QStringList list);

public slots:
/**
* @brief Слот вызывается при успешном соединении с сервером.
*/
void slot_connected();

/**
* @brief Слот вызывается при получении данных от сервера.
*/
void slot_readyRead();
};







#endif // SINGLETON_H
43 changes: 38 additions & 5 deletions client/add_product.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,64 @@

#include <QWidget>
#include <QMessageBox>

namespace Ui {
class AddProductWindow;
}

/**
* @brief Класс окна для добавления нового продукта.
*
* Этот класс предоставляет пользовательский интерфейс для ввода информации
* о продукте (название, белки, жиры, углеводы, вес, цена, тип) и отправки этих данных.
*/
class AddProductWindow : public QWidget
{
Q_OBJECT

public:
/**
* @brief Конструктор окна добавления продукта.
* @param parent Родительский виджет.
*/
explicit AddProductWindow(QWidget *parent = nullptr);
~AddProductWindow();


private:
Ui::AddProductWindow *ui;
/**
* @brief Деструктор.
*/
~AddProductWindow();

signals:
/**
* @brief Сигнал, испускаемый после успешного добавления продукта.
* @param name Название продукта.
* @param proteins Количество белков.
* @param fats Количество жиров.
* @param carbs Количество углеводов.
* @param weight Вес продукта.
* @param cost Стоимость продукта.
* @param type Тип продукта.
*/
void productAdded(QString name, int proteins, int fats, int carbs, int weight, int cost, int type);


public slots:
/**
* @brief Очистка всех полей ввода.
*/
void clear();

/**
* @brief Отображение окна добавления продукта.
*/
void slot_show();

private:
Ui::AddProductWindow *ui; /**< Указатель на интерфейс UI. */

private slots:
/**
* @brief Обработчик нажатия кнопки добавления продукта.
*/
void on_add_clicked();
};

Expand Down
47 changes: 44 additions & 3 deletions client/authregwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,75 @@
#include <QMainWindow>
#include "functions_for_client.h"


QT_BEGIN_NAMESPACE
namespace Ui {
class AuthRegWindow;
}
QT_END_NAMESPACE

/**
* @brief Класс окна авторизации и регистрации.
*
* Этот класс реализует окно для входа в систему и создания нового аккаунта.
* Содержит обработчики для переключения между формами, а также подтверждения входа/регистрации.
*/
class AuthRegWindow : public QMainWindow
{
Q_OBJECT

public:
/**
* @brief Конструктор окна авторизации/регистрации.
* @param parent Родительский виджет.
*/
AuthRegWindow(QWidget *parent = nullptr);

/**
* @brief Деструктор.
*/
~AuthRegWindow();

private slots:
/**
* @brief Обработчик нажатия кнопки "Регистрация".
* Переключает окно в режим регистрации.
*/
void on_toRegButton_clicked();

/**
* @brief Обработчик подтверждения регистрации.
* Отправляет данные нового пользователя на сервер.
*/
void on_regButton_clicked();

/**
* @brief Обработчик подтверждения входа.
* Отправляет данные пользователя на сервер для авторизации.
*/
void on_loginButton_clicked();

signals:
/**
* @brief Сигнал об успешной авторизации.
* @param id Идентификатор пользователя.
* @param login Логин пользователя.
* @param email Электронная почта пользователя.
*/
void auth_ok(QString id, QString login, QString email);

private:
Ui::AuthRegWindow *ui;
void change_type_to_reg(bool);
Ui::AuthRegWindow *ui; /**< Указатель на интерфейс. */

/**
* @brief Вспомогательная функция переключения режима окна.
* @param to_reg Если true — включается режим регистрации.
*/
void change_type_to_reg(bool to_reg);

/**
* @brief Очистка всех полей ввода.
*/
void clear();
};

#endif // AUTHREGWINDOW_H
Loading