Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
61 changes: 61 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
cmake_minimum_required(VERSION 3.14)
project(CPProject)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Sources)
set(GTESTS ${CMAKE_CURRENT_SOURCE_DIR}/Google_tests)


include_directories(${CMAKE_MODULE_PATH})
include_directories(${CMAKE_MODULE_PATH}/Views)
include_directories(${CMAKE_MODULE_PATH}/PageData)
include_directories(${CMAKE_MODULE_PATH}/Page)
include_directories(${CMAKE_MODULE_PATH}/PageGenerator)
include_directories(${CMAKE_MODULE_PATH}/PageManager)

set(ALL_SOURCES
${CMAKE_MODULE_PATH}/Views/SecondaryView/SecondaryView.cpp
${CMAKE_MODULE_PATH}/Views/UserData/UserData.cpp
${CMAKE_MODULE_PATH}/Views/Container/ContainerView.cpp
${CMAKE_MODULE_PATH}/Views/Cell/CellView.cpp
${CMAKE_MODULE_PATH}/Views/Row/RowView.cpp
${CMAKE_MODULE_PATH}/Views/ImageView/ImageView.cpp
${CMAKE_MODULE_PATH}/Views/TableView/TableView.cpp
${CMAKE_MODULE_PATH}/Views/TextView/TextView.cpp
${CMAKE_MODULE_PATH}/Views/View/View.cpp
${CMAKE_MODULE_PATH}/Views/PersonView/PersonView.cpp

${CMAKE_MODULE_PATH}/Page/Page.cpp
${CMAKE_MODULE_PATH}/PageGenerator/PageGenerator.cpp
${CMAKE_MODULE_PATH}/PageManager/PageManager.cpp
${CMAKE_MODULE_PATH}/PageData/PageData.cpp

)


set(ALL_VIEWS_HEADERS
${CMAKE_MODULE_PATH}/Views/UserData/
${CMAKE_MODULE_PATH}/Views/Container/
${CMAKE_MODULE_PATH}/Views/Cell/
${CMAKE_MODULE_PATH}/Views/Row/
${CMAKE_MODULE_PATH}/Views/ImageView/
${CMAKE_MODULE_PATH}/Views/TableView/
${CMAKE_MODULE_PATH}/Views/TextView/
${CMAKE_MODULE_PATH}/Views/View/
${CMAKE_MODULE_PATH}/Views/PersonView/
${CMAKE_MODULE_PATH}/Views/SecondaryView/

${CMAKE_MODULE_PATH}/Page/
${CMAKE_MODULE_PATH}/PageGenerator/
${CMAKE_MODULE_PATH}/PageManager/
${CMAKE_MODULE_PATH}/PageData/

)
include_directories(${ALL_SOURCES})
include_directories(${ALL_HEADERS})

add_executable(CPProject.out ${CMAKE_MODULE_PATH}/main.cpp ${ALL_SOURCES} )

add_subdirectory(Google_tests)

#add_executable(CPProject Sources/main.cpp Sources/Views/Container/ContainerView.cpp Sources/Views/Container/ContainerView.h Sources/Views/View/View.cpp Sources/Views/View/View.h Sources/Page/Page.cpp Sources/Page/Page.h Sources/Views/TableView/TableView.cpp Sources/Views/TableView/TableView.h Sources/Views/Column/ColumnView.cpp Sources/Views/Column/ColumnView.h Sources/Views/Row/RowView.cpp Sources/Views/Row/RowView.h Sources/Views/Button/Button.cpp Sources/Views/Button/Button.h Sources/Views/TextView/TextView.cpp Sources/Views/TextView/TextView.h Sources/Views/ImageView/ImageView.cpp Sources/Views/ImageView/ImageView.h Sources/Views/ViewAttributes.cpp Sources/Views/View/ViewAttributes.h Sources/Views/Selector/Selector.cpp Sources/Views/Selector/Selector.h Sources/Views/Type/Type.cpp Sources/Views/Type/Type.h Sources/PageGenerator/PageGenerator.cpp Sources/PageGenerator/PageGenerator.h Sources/PageManager/PageManager.cpp Sources/PageManager/PageManager.h)
Binary file added Google_tests/.DS_Store
Binary file not shown.
5 changes: 5 additions & 0 deletions Google_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
project(Google_tests)
add_subdirectory(googletest)
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
add_executable(Google_Tests_run view_tests.cpp ../Sources/Page/Page.h ../Sources/Page/Page.cpp ../Sources/Views/View/View.h ../Sources/Views/View/View.cpp ../Sources/Views/Container/ContainerView.h ../Sources/Views/Container/ContainerView.cpp page_tests.cpp)
target_link_libraries(Google_Tests_run gtest gtest_main)
76 changes: 76 additions & 0 deletions Google_tests/view_tests.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
//
// Created by Сергей Петренко on 2019-11-08.
//
#include <Views/ImageView/ImageView.h>
#include <Views/TextView/TextView.h>
#include <Views/TableView/TableView.h>
#include "gtest/gtest.h"
#include "Container/ContainerView.h"
#include "View/View.h"

class TestViews : public ::testing::Test
{
protected:
void SetUp() override
{

view = new View("view", Type::DIV, BClass::CARD_DECK);

}
void TearDown() override
{
delete view;
}
View *view;
};

TEST_F(TestViews, test_view_vonstructor)
{
EXPECT_EQ(view->toString(),"<div class=\"card-deck mb-3 text-center\">\n\n</div>\n\n");
}

TEST_F(TestViews, test_append_in_view)
{
view->append(*new View("test",Type::DIV,BClass::CARD_MB4_SHADOW));

EXPECT_EQ(view->toString(),"<div class=\"card-deck mb-3 text-center\">\n\n <div class=\"card mb-4 shadow-sm\">\n\n </div>\n\n</div>\n\n");
}

TEST_F(TestViews, test_append_and_delete)
{
view->append(*new View("test",Type::DIV,BClass::CARD_MB4_SHADOW));
view->removeSubview("test");
EXPECT_EQ(view->toString(),"<div class=\"card-deck mb-3 text-center\">\n\n</div>\n\n");
}

TEST_F(TestViews, test_append_in_subview)
{
view->append(*new View("test",Type::DIV,BClass::CARD_MB4_SHADOW));
view->appendInSubview("test",*new View("testInSubview",Type::DIV,BClass::CARD_MB4_SHADOW));

EXPECT_EQ(view->toString(),"<div class=\"card-deck mb-3 text-center\">\n\n"
" <div class=\"card mb-4 shadow-sm\">\n\n"
" <div class=\"card mb-4 shadow-sm\">\n\n "
" </div>\n\n </div>\n\n</div>\n\n");
}

TEST_F(TestViews, test_append_in_subview_and_delete)
{
view->append(*new View("test",Type::DIV,BClass::CARD_MB4_SHADOW));
view->removeSubview("testInSubview");
EXPECT_EQ(view->toString(),"<div class=\"card-deck mb-3 text-center\">\n\n</div>\n\n");
}


TEST_F(TestViews, test_add_subview)
{
view->append(*new View("test",Type::DIV,BClass::CARD_MB4_SHADOW));
view->removeSubview("test");
EXPECT_EQ(view->toString(),"<div class=\"card-deck mb-3 text-center\">\n\n</div>\n\n");
}






2 changes: 0 additions & 2 deletions README.md

This file was deleted.

Binary file added Sources/.DS_Store
Binary file not shown.
5 changes: 5 additions & 0 deletions Sources/Page/Page.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
//
// Created by Сергей Петренко on 2019-11-07.
//

#include "Page.h"
65 changes: 65 additions & 0 deletions Sources/Page/Page.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
//
// Created by Сергей Петренко on 2019-11-07.
//

#ifndef CPPROJECT_PAGE_H
#define CPPROJECT_PAGE_H

#include <Views/View/View.h>
#include <Views/SecondaryView/SecondaryView.h>
#include <Views/TextView/TextView.h>
#include <string.h>

class Page {
public:
View *view;

Page() {
view = new View("main", Type::DIV);
makeTemplate();
}

void makeTemplate() {

view->append(*new View("html", Type::HTML));
view->appendInSubview("html",
*new SecondaryView("meta",
Type::META,
std::vector<Attribute>{
Attribute("charset",
"UTF-8")
}));
view->appendInSubview("html", (*new TextView("title", Type::TITLE,
"FINDFACE")));
view->appendInSubview("html",
*new SecondaryView("attributes",
Type::LINK,
std::vector<Attribute>{
Attribute("rel",
"stylesheet"),
Attribute("href",
"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"),
Attribute("integrity",
"sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"),
Attribute(
"crossorigin",
"anonymous")
}));

view->appendInSubview("html", *new View("body", Type::BODY));
}

void appendInBody(ContainerView &containerView) {
view->appendInSubview("body", containerView);
}

std::string toString() {
std::string res;
res += "<!DOCTYPE html>\n";
res += view->toString(0);
return res;
}
};


#endif //CPPROJECT_PAGE_H
19 changes: 19 additions & 0 deletions Sources/PageData/PageData.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// Created by Сергей Петренко on 2019-12-05.
//

#include "PageData.h"

PageData::PageData(std::vector<UserData *> u, PageType t, Organize o) {
type = t;
userData = u;
organize = o;
}

void PageData::setOrganizeType(Organize o) {
organize = o;
}

void PageData::setPageType(PageType t) {
type = t;
}
51 changes: 51 additions & 0 deletions Sources/PageData/PageData.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//
// Created by Сергей Петренко on 2019-12-05.
//

#ifndef CPPROJECT_PAGEDATA_H
#define CPPROJECT_PAGEDATA_H

#include<vector>
#include <Views/UserData/UserData.h>

enum class PageType : uint8_t {
ONE_USER_PAGE,
TABLE_OF_USERS,
START_PAGE,

};
enum class Organize : uint8_t {
ONE_LINE_VERTICAL,
ONE_LINE_HORIZONTAL,
SQUARE,
RECT_HORIZONTAL,
RECT_VERTICAL

};

class PageData {
public:

std::vector<UserData *> userData;

PageData(std::vector<UserData *> u, PageType t, Organize o);

void setOrganizeType(Organize o);

void setPageType(PageType o);

PageType getpageType() {
return type;
}

Organize getPageOrganizeType() {
return organize;
}

private:
Organize organize;
PageType type;
};


#endif //CPPROJECT_PAGEDATA_H
69 changes: 69 additions & 0 deletions Sources/PageGenerator/PageGenerator.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
//
// Created by Сергей Петренко on 2019-11-16.
//

#include "PageGenerator.h"

void
PageGenerator::organizeCells(Organize o, int &rows, int &cells, int count) {
switch (o) {
case Organize::ONE_LINE_VERTICAL:
rows = 1;
cells = count;
break;
case Organize::ONE_LINE_HORIZONTAL:
cells = 2;
rows = count;
break;

case Organize::RECT_HORIZONTAL:
break;
case Organize::RECT_VERTICAL:
break;
}
}

Page *
PageGenerator::generateTablePage(std::vector<UserData *> userData, Organize o) {
page = new Page();
std::vector<PersonView *> persons;
for (auto &u : userData) {
persons.push_back(new PersonView(*u));
}

int rowsCount = 0;
int cellsCount = 0;
organizeCells(o, rowsCount, cellsCount, userData.size());

View *view = new View("Main", Type::DIV, BClass::CARD_DECK);

TableView *tableView = new TableView("Table", rowsCount, cellsCount);
int r = 0;
int c = 0;
tableView->appendCell(
std::make_shared<CellView>(*new CellView(c, rowsCount)));
for (auto &p: persons) {
tableView->appendRowInCell(c, std::make_shared<RowView>(
*new RowView(r, *p)));
r++;
if (r >= rowsCount) {
r = 0;
tableView->appendCell(
std::make_shared<CellView>(*new CellView(++c, rowsCount)));
}
}
page->appendInBody(*tableView);
return page;
}

Page *PageGenerator::generateStartPage() {

}

Page *PageGenerator::generateUserPage(UserData userData) {
Page *page = new Page();
page->appendInBody(*new TextView("test", Type::H4, BClass::TEXT_NORMAL,
"hello world"));
return page;
}

34 changes: 34 additions & 0 deletions Sources/PageGenerator/PageGenerator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// Created by Сергей Петренко on 2019-11-16.
//

#ifndef CPPROJECT_PAGEGENERATOR_H
#define CPPROJECT_PAGEGENERATOR_H

#include <math.h>
#include <Page/Page.h>
#include <Views/PersonView/PersonView.h>
#include <PageData/PageData.h>


class PageGenerator {

public:

Page *page;

PageGenerator() = default;

void organizeCells(Organize o, int &rows, int &cells, int count);

Page *generateTablePage(std::vector<UserData *> userData, Organize o);

Page *generateStartPage();

Page *generateUserPage(UserData userData);


};


#endif //CPPROJECT_PAGEGENERATOR_H
Loading