diff --git a/qt/CMakeLists.txt b/qt/CMakeLists.txt index 348564069176e29008011add3f973bacdb2df67c..ded638073a6185134bd1d9b17af8c63e0fea98e7 100644 --- a/qt/CMakeLists.txt +++ b/qt/CMakeLists.txt @@ -1,52 +1,26 @@ +message(${CMAKE_CURRENT_SOURCE_DIR}) + cmake_minimum_required(VERSION 3.5) set(CMAKE_CXX_STANDARD 20) -set(CMAKE_INCLUDE_CURRENT_DIR ON) + +message(${CMAKE_CURRENT_SOURCE_DIR}) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -# set(CMAKE_AUTOMOC_MOC_OPTIONS "moc=/usr/lib/x86_64-linux-gnu/qt5/bin") - -find_package(QT NAMES Qt5 COMPONENTS Widgets REQUIRED) -find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED) -# find_package(Qt5Network REQUIRED) -find_package(Qt5Multimedia REQUIRED) -FIND_PACKAGE( Qt5MultimediaWidgets REQUIRED ) +find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt5 COMPONENTS Widgets REQUIRED) -SET(QT_USE_QTMULTIMEDIA TRUE) -SET(QT_USE_QTMULTIMEDIAWIDGETS TRUE) +add_subdirectory(Models) +add_subdirectory(Widgets) -add_executable(qt +add_executable(app main.cpp -AudioPlayer.cpp -AudioWidget.cpp -deck_model.cpp -ExamplesWidget.cpp -ImagesWidget.cpp -mainwindow.cpp -word_cards.cpp -main.cpp -AudioPlayer.ui -AudioWidget.ui -ExamplesWidget.ui -ImagesWidget.ui -mainwindow.ui -Deck.cpp -) -target_include_directories(qt PUBLIC ./) - -target_link_libraries(qt -Qt${QT_VERSION_MAJOR}::Widgets -Qt5::Multimedia -Qt5::Network -media -connection -definitions_provider_wrapper -definitions_provider_interface -format_processor_plugin_wrapper -card -word_plugin_wrapper ) -QT5_USE_MODULES (qt Multimedia MultimediaWidgets) \ No newline at end of file +target_link_libraries(app +Qt5::Core +Qt5::Widgets +main_window +) \ No newline at end of file diff --git a/qt/Models/CMakeLists.txt b/qt/Models/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..86dc56073c173a0b977f20519ca6e9d1b817ac94 --- /dev/null +++ b/qt/Models/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(WordCards) +add_subdirectory(DeckModel) +add_subdirectory(SavedDeckModel) \ No newline at end of file diff --git a/qt/Models/DeckModel/CMakeLists.txt b/qt/Models/DeckModel/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..d997dfdb8280117dc14f6fe31e66f4a5774694b2 --- /dev/null +++ b/qt/Models/DeckModel/CMakeLists.txt @@ -0,0 +1,28 @@ +message(${CMAKE_CURRENT_SOURCE_DIR}) + +# set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt5 COMPONENTS Widgets REQUIRED) + +add_library(deck_model +Deck.cpp +deck_model.cpp +# Deck.hpp +# deck_model.h +# IDeck.h +) + +target_include_directories(deck_model PUBLIC ./) + +target_link_libraries(deck_model PUBLIC +Qt5::Core +Qt5::Widgets +word_cards +card +word_plugin_wrapper +) diff --git a/qt/Deck.cpp b/qt/Models/DeckModel/Deck.cpp similarity index 100% rename from qt/Deck.cpp rename to qt/Models/DeckModel/Deck.cpp diff --git a/qt/Deck.hpp b/qt/Models/DeckModel/Deck.hpp similarity index 100% rename from qt/Deck.hpp rename to qt/Models/DeckModel/Deck.hpp diff --git a/qt/IDeck.h b/qt/Models/DeckModel/IDeck.h similarity index 100% rename from qt/IDeck.h rename to qt/Models/DeckModel/IDeck.h diff --git a/qt/deck_model.cpp b/qt/Models/DeckModel/deck_model.cpp similarity index 100% rename from qt/deck_model.cpp rename to qt/Models/DeckModel/deck_model.cpp diff --git a/qt/deck_model.h b/qt/Models/DeckModel/deck_model.h similarity index 100% rename from qt/deck_model.h rename to qt/Models/DeckModel/deck_model.h diff --git a/qt/Models/SavedDeckModel/CMakeLists.txt b/qt/Models/SavedDeckModel/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..5dedffe48fb24c35dff4c8a0f1345bf0df38cf22 --- /dev/null +++ b/qt/Models/SavedDeckModel/CMakeLists.txt @@ -0,0 +1,22 @@ +message(${CMAKE_CURRENT_SOURCE_DIR}) + +# set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt5 COMPONENTS Widgets REQUIRED) + +add_library(saved_deck_model +SavedDeckModel.cpp +) + +target_include_directories(saved_deck_model PUBLIC ./) + +target_link_libraries(saved_deck_model PUBLIC +Qt5::Core +Qt5::Widgets +card +) diff --git a/qt/Models/SavedDeckModel/SavedDeckModel.cpp b/qt/Models/SavedDeckModel/SavedDeckModel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2f080d3aa21c647a4dcc2f55062a8731fbc0a0c6 --- /dev/null +++ b/qt/Models/SavedDeckModel/SavedDeckModel.cpp @@ -0,0 +1,83 @@ +#include "SavedDeckModel.hpp" +#include +#include +#include + +SavedDeckModel::SavedDeckModel(std::vector cards, QObject *parent) + : QAbstractTableModel(parent) + , cards_(cards) +{ +} + +QVariant SavedDeckModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (role == Qt::DisplayRole && orientation == Qt::Horizontal) { + switch (section) { + case 0: + return "word"; + case 1: + return "definition"; + default: + return QVariant(); + } + } + return QVariant(); +} + +int SavedDeckModel::rowCount(const QModelIndex &parent) const +{ + if (parent.isValid()) + return 0; + + return cards_.size(); +} + +int SavedDeckModel::columnCount(const QModelIndex &parent) const +{ + if (parent.isValid()) + return 0; + + return 2; +} + +QVariant SavedDeckModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) + return QVariant(); + + if (!hasIndex(index.row(), index.column())) { + return QVariant(); + } + switch (role) { + case Qt::DisplayRole: + if (index.column() == 0) { + return QString::fromStdString(cards_.at(index.row()).word); + } + if (index.column() == 1) { + return QString::fromStdString(cards_.at(index.row()).definition); + } + return QVariant(); + default: + return QVariant(); + } + return QVariant(); +} + +bool SavedDeckModel::removeRows(int row, int count, const QModelIndex &parent) +{ + beginRemoveRows(parent, row, row + count - 1); + cards_.erase(cards_.begin() + row, cards_.begin() + row + count); + endRemoveRows(); + return true; +} + +QModelIndex SavedDeckModel::next(const QModelIndex& index) { + // if (!hasIndex(index.row() + 1, index.column())) { + // return index; + // } + // return createIndex(index.row() + 1, col) + return QModelIndex(); +} +QModelIndex prev(const QModelIndex& index) { + return QModelIndex(); +} \ No newline at end of file diff --git a/qt/Models/SavedDeckModel/SavedDeckModel.hpp b/qt/Models/SavedDeckModel/SavedDeckModel.hpp new file mode 100644 index 0000000000000000000000000000000000000000..8d12191ef41fa43571dc2752b962f1292ddbe12e --- /dev/null +++ b/qt/Models/SavedDeckModel/SavedDeckModel.hpp @@ -0,0 +1,34 @@ +#ifndef SAVEDDECKMODEL_H +#define SAVEDDECKMODEL_H + +#include +#include +#include "Card.h" + +class SavedDeckModel : public QAbstractTableModel +{ + Q_OBJECT + +public: + explicit SavedDeckModel(std::vector cards, QObject *parent = nullptr); + + // Header: + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; + + // Basic functionality: + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + int columnCount(const QModelIndex &parent = QModelIndex()) const override; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + // Remove data: + bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override; + +public slots: + QModelIndex next(const QModelIndex& index); + QModelIndex prev(const QModelIndex& index); + +private: + std::vector cards_; +}; + +#endif // SAVEDDECKMODEL_H diff --git a/qt/Models/WordCards/CMakeLists.txt b/qt/Models/WordCards/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..0353096b681b7054c2b9796fefb72f8802b75068 --- /dev/null +++ b/qt/Models/WordCards/CMakeLists.txt @@ -0,0 +1,22 @@ +message(${CMAKE_CURRENT_SOURCE_DIR}) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt5 COMPONENTS Widgets REQUIRED) + +add_library(word_cards +word_cards.cpp +# word_cards.h +) +target_include_directories(word_cards PUBLIC ./) + +target_link_libraries(word_cards PUBLIC +Qt5::Core +Qt5::Widgets +card +) diff --git a/qt/word_cards.cpp b/qt/Models/WordCards/word_cards.cpp similarity index 100% rename from qt/word_cards.cpp rename to qt/Models/WordCards/word_cards.cpp diff --git a/qt/word_cards.h b/qt/Models/WordCards/word_cards.h similarity index 100% rename from qt/word_cards.h rename to qt/Models/WordCards/word_cards.h diff --git a/qt/AudioPlayer.cpp b/qt/Widgets/Audio/AudioPlayer/AudioPlayer.cpp similarity index 100% rename from qt/AudioPlayer.cpp rename to qt/Widgets/Audio/AudioPlayer/AudioPlayer.cpp diff --git a/qt/AudioPlayer.hpp b/qt/Widgets/Audio/AudioPlayer/AudioPlayer.hpp similarity index 98% rename from qt/AudioPlayer.hpp rename to qt/Widgets/Audio/AudioPlayer/AudioPlayer.hpp index 02202fd8a744750df478883b66ca48359f4379bd..2a46585a71f4357d6a834d453458855b80bcbd46 100644 --- a/qt/AudioPlayer.hpp +++ b/qt/Widgets/Audio/AudioPlayer/AudioPlayer.hpp @@ -9,7 +9,7 @@ #include #include #include -#include "Media.hpp" +#include "Media.h" namespace Ui { class AudioPlayer; diff --git a/qt/AudioPlayer.ui b/qt/Widgets/Audio/AudioPlayer/AudioPlayer.ui similarity index 100% rename from qt/AudioPlayer.ui rename to qt/Widgets/Audio/AudioPlayer/AudioPlayer.ui diff --git a/qt/Widgets/Audio/AudioPlayer/CMakeLists.txt b/qt/Widgets/Audio/AudioPlayer/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..0141a78d7942930eddf6298d33ab78903cb7688b --- /dev/null +++ b/qt/Widgets/Audio/AudioPlayer/CMakeLists.txt @@ -0,0 +1,29 @@ +# set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(Qt5Multimedia REQUIRED) +FIND_PACKAGE( Qt5MultimediaWidgets REQUIRED ) + +SET(QT_USE_QTMULTIMEDIA TRUE) +SET(QT_USE_QTMULTIMEDIAWIDGETS TRUE) + +add_library(audio_player +AudioPlayer.cpp +# AudioPlayer.hpp +AudioPlayer.ui +) + +target_include_directories(audio_player PUBLIC ./) + +target_link_libraries(audio_player +Qt5::Widgets +Qt5::Multimedia +# Qt5::Network +card +) + +QT5_USE_MODULES (audio_player Multimedia MultimediaWidgets) \ No newline at end of file diff --git a/qt/AudioWidget.cpp b/qt/Widgets/Audio/AudioViewer/AudioWidget.cpp similarity index 100% rename from qt/AudioWidget.cpp rename to qt/Widgets/Audio/AudioViewer/AudioWidget.cpp diff --git a/qt/AudioWidget.hpp b/qt/Widgets/Audio/AudioViewer/AudioWidget.hpp similarity index 97% rename from qt/AudioWidget.hpp rename to qt/Widgets/Audio/AudioViewer/AudioWidget.hpp index eeb0e0a4a6528cc9a0474296154f01169f0cb929..b67857061bfdd849f3260cb7d47a541a126aedec 100644 --- a/qt/AudioWidget.hpp +++ b/qt/Widgets/Audio/AudioViewer/AudioWidget.hpp @@ -6,7 +6,7 @@ #include #include #include -#include "Media.hpp" +#include "Media.h" // #include "DefinitionsProviderWrapper.h" namespace Ui { diff --git a/qt/AudioWidget.ui b/qt/Widgets/Audio/AudioViewer/AudioWidget.ui similarity index 100% rename from qt/AudioWidget.ui rename to qt/Widgets/Audio/AudioViewer/AudioWidget.ui diff --git a/qt/Widgets/Audio/AudioViewer/CMakeLists.txt b/qt/Widgets/Audio/AudioViewer/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..bd7d9e7bd664be81abeac489f9e2672bbb6e7aa2 --- /dev/null +++ b/qt/Widgets/Audio/AudioViewer/CMakeLists.txt @@ -0,0 +1,26 @@ +# set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(Qt5Multimedia REQUIRED) +FIND_PACKAGE( Qt5MultimediaWidgets REQUIRED ) + +SET(QT_USE_QTMULTIMEDIA TRUE) +SET(QT_USE_QTMULTIMEDIAWIDGETS TRUE) + +add_library(audio_viewer +AudioWidget.cpp +AudioWidget.hpp +AudioWidget.ui +) + +target_include_directories(audio_viewer PUBLIC ./) + +target_link_libraries(audio_viewer +Qt5::Widgets +Qt5::Multimedia +audio_player +) diff --git a/qt/Widgets/Audio/CMakeLists.txt b/qt/Widgets/Audio/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..17f1d38c8cd21b5557e3d486dfd46415edd625cc --- /dev/null +++ b/qt/Widgets/Audio/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(AudioPlayer) +add_subdirectory(AudioViewer) \ No newline at end of file diff --git a/qt/Widgets/CMakeLists.txt b/qt/Widgets/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..56883ef809e795b809a6745ada4c1eda49ebc4ea --- /dev/null +++ b/qt/Widgets/CMakeLists.txt @@ -0,0 +1,4 @@ +add_subdirectory(Audio) +add_subdirectory(ExamplesViewer) +add_subdirectory(ImagesViewer) +add_subdirectory(MainWindow) \ No newline at end of file diff --git a/qt/Widgets/ExamplesViewer/CMakeLists.txt b/qt/Widgets/ExamplesViewer/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..ad49509667477211be2e4db32473a6b65810d4ec --- /dev/null +++ b/qt/Widgets/ExamplesViewer/CMakeLists.txt @@ -0,0 +1,19 @@ +# set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 COMPONENTS Widgets REQUIRED) + +add_library(examples_viewer +ExamplesWidget.cpp +# ExamplesWidget.hpp +ExamplesWidget.ui +) + +target_include_directories(examples_viewer PUBLIC ./) + +target_link_libraries(examples_viewer +Qt5::Widgets +) diff --git a/qt/ExamplesWidget.cpp b/qt/Widgets/ExamplesViewer/ExamplesWidget.cpp similarity index 53% rename from qt/ExamplesWidget.cpp rename to qt/Widgets/ExamplesViewer/ExamplesWidget.cpp index 2d2dad87f2dee6a81446cdbc99305c57ea25b848..dc6e575aa4c39bcfc80355f278a25625bb38b641 100644 --- a/qt/ExamplesWidget.cpp +++ b/qt/Widgets/ExamplesViewer/ExamplesWidget.cpp @@ -36,82 +36,87 @@ ExamplesWidget::~ExamplesWidget() delete ui; } -void ExamplesWidget::setButtonEnabled(QPushButton* button, bool enabled) { +void ExamplesWidget::setItemEnabled(size_t index, bool enabled) { + QLayoutItem* edit_item = form_layout->itemAt(index, QFormLayout::LabelRole); + QTextEdit* edit = qobject_cast(edit_item->widget()); + QLayoutItem* button_item = form_layout->itemAt(index, QFormLayout::FieldRole); + QPushButton* button = qobject_cast(button_item->widget()); if (enabled) { + edit->setEnabled(true); + edit->setText(QString::fromStdString(examples->at(page_number * edits_in_page + index))); button->setEnabled(true); button->setChecked(false); button->setStyleSheet("background-color: white"); } else { - button->setStyleSheet("background-color: gray"); + edit->setEnabled(true); + edit->clear(); + edit->setEnabled(false); + button->setEnabled(true); button->setChecked(false); + button->setStyleSheet("background-color: gray"); button->setEnabled(false); } } -void ExamplesWidget::setButtonChosen(QPushButton* button) { +void ExamplesWidget::setItemChosen(size_t index) { + QLayoutItem* button_item = form_layout->itemAt(index, QFormLayout::FieldRole); + QPushButton* button = qobject_cast(button_item->widget()); + button->setEnabled(true); + button->setChecked(true); button->setStyleSheet("background-color: green"); } -void ExamplesWidget::set(const std::vector *new_examples) +void ExamplesWidget::set(const std::vector *new_examples, std::vector chosen) { + std::cout << "set при page_number " << page_number << std::endl; examples = new_examples; if (!examples) { return; } + std::cout << "examples не пустой " << page_number << std::endl; clear(); - chosen.resize(examples->size()); + if (!chosen.empty()) { + chosen_ = chosen; + } + for (size_t i = chosen_.size(); i < examples->size(); ++i) { + chosen_.push_back(false); + } + size_t examples_index = page_number * edits_in_page; for (size_t i = 0; i < edits_in_page; ++i) { - QLayoutItem* edit_item = form_layout->itemAt(i, QFormLayout::LabelRole); - QTextEdit* edit = qobject_cast(edit_item->widget()); - QLayoutItem* button_item = form_layout->itemAt(i, QFormLayout::FieldRole); - QPushButton* button = qobject_cast(button_item->widget()); - if (i < examples->size()) { - edit->setText(QString::fromStdString(examples->at(i))); - edit->setEnabled(true); - setButtonEnabled(button, true); - } - else { + if (examples_index + i < examples->size()) { + setItemEnabled(i, true); + if (chosen_.at(examples_index + i)) { + setItemChosen(i); + } } } } void ExamplesWidget::next() { - size_t start_index = (page_number + 1) * edits_in_page; - if (start_index >= examples->size()) { + if (!examples) { return; } - clear(); - for (size_t i = 0; i < edits_in_page; ++i) { - QLayoutItem* edit_item = form_layout->itemAt(i, QFormLayout::LabelRole); - QTextEdit* edit = qobject_cast(edit_item->widget()); - QLayoutItem* button_item = form_layout->itemAt(i, QFormLayout::FieldRole); - QPushButton* button = qobject_cast(button_item->widget()); - if (start_index + i < examples->size()) { - edit->setText(QString::fromStdString(examples->at(start_index + i))); - edit->setEnabled(true); - setButtonEnabled(button, true); - } - else { - } + if (page_number * edits_in_page >= examples->size()) { + return; } ++page_number; + std::cout << "Увеличили page_number до " << page_number << std::endl; + set(examples); } void ExamplesWidget::prev() { - if (page_number == 0) { + if (!examples) { return; } - clear(); - if (page_number == 1) { - set(examples); - --page_number; + if (page_number == 0) { return; } - page_number -= 2; - next(); + --page_number; + std::cout << "Уменьшили page_number до " << page_number << std::endl; + set(examples); } std::vector ExamplesWidget::extract() @@ -120,8 +125,8 @@ std::vector ExamplesWidget::extract() if (!examples) { return extracted; } - for (size_t i = 0; i < chosen.size(); ++i) { - if (chosen[i]) { + for (size_t i = 0; i < chosen_.size(); ++i) { + if (chosen_[i]) { extracted.push_back(examples->at(i)); } } @@ -131,27 +136,21 @@ std::vector ExamplesWidget::extract() void ExamplesWidget::clear() { for (size_t i = 0; i < edits_in_page; ++i) { - QLayoutItem* item = form_layout->itemAt(i, QFormLayout::LabelRole); - if (QTextEdit* edit = qobject_cast(item->widget())) { - edit->clear(); - } - QLayoutItem* button_item = form_layout->itemAt(i, QFormLayout::FieldRole); - QPushButton* button = qobject_cast(button_item->widget()); - setButtonEnabled(button, false); + setItemEnabled(i, false); } } void ExamplesWidget::updateChosen(size_t index, bool choice, QPushButton *button) { - if (chosen.size() <= index) { + if (chosen_.size() <= page_number * edits_in_page + index) { return; } - chosen.at(index) = choice; + chosen_.at(page_number * edits_in_page + index) = choice; if (choice) { - setButtonChosen(button); + setItemChosen(index); } else { - setButtonEnabled(button, true); + setItemEnabled(index, true); } } diff --git a/qt/ExamplesWidget.hpp b/qt/Widgets/ExamplesViewer/ExamplesWidget.hpp similarity index 76% rename from qt/ExamplesWidget.hpp rename to qt/Widgets/ExamplesViewer/ExamplesWidget.hpp index 967917214852d03b89131310fa01f58393ffdd4e..62635f73d24a7245d30370bd6752415a1f1678cb 100644 --- a/qt/ExamplesWidget.hpp +++ b/qt/Widgets/ExamplesViewer/ExamplesWidget.hpp @@ -19,11 +19,11 @@ public: explicit ExamplesWidget(QWidget *parent = nullptr); ~ExamplesWidget(); public slots: - void set(const std::vector* new_examples); + void set(const std::vector* new_examples, std::vector chosen=std::vector()); void next(); void prev(); - void setButtonEnabled(QPushButton* button, bool enabled); - void setButtonChosen(QPushButton* button); + void setItemEnabled(size_t index, bool enabled); + void setItemChosen(size_t index); std::vector extract(); private slots: @@ -33,7 +33,7 @@ private slots: private: Ui::ExamplesWidget *ui; const std::vector* examples; - std::vector chosen; + std::vector chosen_; QFormLayout* form_layout; const size_t edits_in_page = 3; size_t page_number; diff --git a/qt/ExamplesWidget.ui b/qt/Widgets/ExamplesViewer/ExamplesWidget.ui similarity index 100% rename from qt/ExamplesWidget.ui rename to qt/Widgets/ExamplesViewer/ExamplesWidget.ui diff --git a/qt/Widgets/ImagesViewer/CMakeLists.txt b/qt/Widgets/ImagesViewer/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..8678ca0a227bddff2ce80be27ccf4d34e193d64e --- /dev/null +++ b/qt/Widgets/ImagesViewer/CMakeLists.txt @@ -0,0 +1,23 @@ +# set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +# find_package(QT NAMES Qt5 COMPONENTS Widgets REQUIRED) +find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(Qt5 COMPONENTS Network REQUIRED) + +add_library(images_viewer +ImagesWidget.cpp +# ImagesWidget.hpp +ImagesWidget.ui +) + +target_include_directories(images_viewer PUBLIC ./) + +target_link_libraries(images_viewer +Qt5::Widgets +Qt5::Network +card +) \ No newline at end of file diff --git a/qt/ImagesWidget.cpp b/qt/Widgets/ImagesViewer/ImagesWidget.cpp similarity index 98% rename from qt/ImagesWidget.cpp rename to qt/Widgets/ImagesViewer/ImagesWidget.cpp index 90e46e6498b42da2e7a5106007e045a88fa41a47..f35a34c539b8f041a3ec6425389a51c3d19a6fd8 100644 --- a/qt/ImagesWidget.cpp +++ b/qt/Widgets/ImagesViewer/ImagesWidget.cpp @@ -1,12 +1,11 @@ #include "ImagesWidget.hpp" -#include "AudioWidget.hpp" #include "ui_ImagesWidget.h" #include #include #include #include #include -#include +// #include IMagesWidget::IMagesWidget(QWidget *parent) : QWidget(parent), diff --git a/qt/ImagesWidget.hpp b/qt/Widgets/ImagesViewer/ImagesWidget.hpp similarity index 97% rename from qt/ImagesWidget.hpp rename to qt/Widgets/ImagesViewer/ImagesWidget.hpp index 2b98d15ac9bd5ad2a70dd44cf95fcb0b85eb58e9..c386d6e470759d1f4b9c58d1a347cb53509bcaa0 100644 --- a/qt/ImagesWidget.hpp +++ b/qt/Widgets/ImagesViewer/ImagesWidget.hpp @@ -5,7 +5,7 @@ #include #include #include -#include "Media.hpp" +#include "Media.h" namespace Ui { class IMagesWidget; diff --git a/qt/ImagesWidget.ui b/qt/Widgets/ImagesViewer/ImagesWidget.ui similarity index 100% rename from qt/ImagesWidget.ui rename to qt/Widgets/ImagesViewer/ImagesWidget.ui diff --git a/qt/Widgets/MainWindow/CMakeLists.txt b/qt/Widgets/MainWindow/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..150e7553b0a7dd747c61fdcf182438949bef8dac --- /dev/null +++ b/qt/Widgets/MainWindow/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 3.5) +set(CMAKE_CXX_STANDARD 20) +# set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt5 COMPONENTS Widgets REQUIRED) + +add_library(main_window +mainwindow.cpp +# mainwindow.h +mainwindow.ui +) + +target_include_directories(main_window PUBLIC ./) + +target_link_libraries(main_window PUBLIC +Qt5::Widgets +connection +deck_model +card +examples_viewer +audio_viewer +images_viewer +word_plugin_wrapper +format_processor_plugin_wrapper +) \ No newline at end of file diff --git a/qt/mainwindow.cpp b/qt/Widgets/MainWindow/mainwindow.cpp similarity index 95% rename from qt/mainwindow.cpp rename to qt/Widgets/MainWindow/mainwindow.cpp index 93d85f82c4dc333708123284bcb7ff96ad2e1b35..df0b5b7df3ae2d755c9afcfab69fb4bce93c6c76 100644 --- a/qt/mainwindow.cpp +++ b/qt/Widgets/MainWindow/mainwindow.cpp @@ -57,14 +57,17 @@ void MainWindow::onSearchReturned() if (int_idx == -1) { deckModel->load(ui->searchLine->text(), ui->filterEdit->toPlainText()); + std::cout << "rows = " << deckModel->rowCount() << std::endl; + int rows = deckModel->rowCount() - 1; QModelIndex qm_idx = deckModel->index(deckModel->rowCount() - 1); ui->deckView->setCurrentIndex(qm_idx); - emit ui->deckView->clicked(qm_idx); + // emit ui->deckView->clicked(qm_idx); + ui->deckView->clicked(qm_idx); return; } QModelIndex qm_idx = deckModel->index(int_idx); ui->deckView->setCurrentIndex(qm_idx); - emit ui->deckView->clicked(qm_idx); + ui->deckView->clicked(qm_idx); } void MainWindow::updateCardFields() @@ -175,4 +178,4 @@ void MainWindow::save() { FormatProcessorPluginWrapper savingPlugin(connection); savingPlugin.init("processor"); savingPlugin.save(absolute_path); -} \ No newline at end of file +} diff --git a/qt/mainwindow.h b/qt/Widgets/MainWindow/mainwindow.h similarity index 97% rename from qt/mainwindow.h rename to qt/Widgets/MainWindow/mainwindow.h index 8c3f7d9fd1503227a1f64406a63c43482410247d..0fe3e79960c7640ff646201ba009cec7648827e4 100644 --- a/qt/mainwindow.h +++ b/qt/Widgets/MainWindow/mainwindow.h @@ -2,12 +2,12 @@ #define MAINWINDOW_H #include -#include #include "deck_model.h" #include "Card.h" #include "AudioWidget.hpp" #include "ImagesWidget.hpp" #include "ExamplesWidget.hpp" +#include "IRequestable.h" QT_BEGIN_NAMESPACE diff --git a/qt/mainwindow.ui b/qt/Widgets/MainWindow/mainwindow.ui similarity index 100% rename from qt/mainwindow.ui rename to qt/Widgets/MainWindow/mainwindow.ui diff --git a/qt/main.cpp b/qt/main.cpp index 8836ef1ddc5cdc6a5faf73793efb91b5432796d5..9ac7d8c10a0c4950d54428684b46ce64fd5dec1f 100644 --- a/qt/main.cpp +++ b/qt/main.cpp @@ -1,17 +1,17 @@ #include "mainwindow.h" #include -#include -#include -#include -#include -#include -#include -#include -#include "AudioPlayer.hpp" -#include "Media.hpp" -#include "AudioWidget.hpp" -#include "ExamplesWidget.hpp" +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include "AudioPlayer.hpp" +// #include "Media.hpp" +// #include "AudioWidget.hpp" +// #include "ExamplesWidget.hpp" // #include "test.h" // int main(int argc, char *argv[])