Skip to content

Commit

Permalink
AddedIconsAndMultifiltersPrototype
Browse files Browse the repository at this point in the history
  • Loading branch information
Razvanix445 committed Aug 26, 2024
1 parent 731cd66 commit 8718dc0
Show file tree
Hide file tree
Showing 21 changed files with 670 additions and 53 deletions.
6 changes: 6 additions & 0 deletions StardewValleyApp/StardewValleyApp.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
<DynamicSource Condition="'$(Configuration)|$(Platform)'=='Release|x64'">input</DynamicSource>
<QtMocFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(Filename).moc</QtMocFileName>
</ClCompile>
<ClCompile Include="src\main\utils\RangeSlider.cpp" />
<ClCompile Include="src\resources\sqlite\shell.c" />
<ClCompile Include="src\resources\sqlite\sqlite3.c" />
</ItemGroup>
Expand All @@ -58,6 +59,7 @@
<QtMoc Include="src\main\utils\FishToolTip.h" />
<QtMoc Include="src\main\utils\CustomCheckBox.h" />
<QtMoc Include="src\main\utils\ToolTip.h" />
<QtMoc Include="src\main\utils\RangeSlider.h" />
<ClInclude Include="src\resources\sqlite\sqlite3.h" />
<ClInclude Include="src\resources\sqlite\sqlite3ext.h" />
</ItemGroup>
Expand All @@ -75,6 +77,7 @@
<QtUic Include="src\main\gui\StardewValleyApp.ui" />
</ItemGroup>
<ItemGroup>
<Image Include="src\resources\icons\Trophy.ico" />
<Image Include="src\resources\images\All_Seasons_Icon.png" />
<Image Include="src\resources\images\Anchovy.png" />
<Image Include="src\resources\images\Blue_Discus.png" />
Expand Down Expand Up @@ -136,6 +139,9 @@
<ItemGroup>
<Font Include="src\resources\fonts\stardew-valley-stonks.ttf" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="appicon.rc" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{4B0D300D-A78D-4E71-9694-F0973893F792}</ProjectGuid>
<Keyword>QtVS_v304</Keyword>
Expand Down
6 changes: 6 additions & 0 deletions StardewValleyApp/StardewValleyApp.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<ClCompile Include="src\main\gui\FishManagementController.cpp" />
<ClCompile Include="src\main\service\Service.cpp" />
<ClCompile Include="src\main\gui\FishDetailsWindow.cpp" />
<ClCompile Include="src\main\utils\RangeSlider.cpp" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="src\main\gui\StardewValleyApp.h" />
Expand All @@ -31,6 +32,7 @@
<QtMoc Include="src\main\gui\FishDetailsWindow.h" />
<QtMoc Include="src\main\utils\CustomCheckBox.h" />
<QtMoc Include="src\main\utils\ToolTip.h" />
<QtMoc Include="src\main\utils\RangeSlider.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\main\model\Entity.h" />
Expand Down Expand Up @@ -116,8 +118,12 @@
<Image Include="src\resources\images\Frame.png" />
<Image Include="src\resources\images\Label.png" />
<Image Include="src\resources\images\DescriptionPanel.png" />
<Image Include="src\resources\icons\Trophy.ico" />
</ItemGroup>
<ItemGroup>
<Font Include="src\resources\fonts\stardew-valley-stonks.ttf" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="appicon.rc" />
</ItemGroup>
</Project>
3 changes: 3 additions & 0 deletions StardewValleyApp/appicon.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
IDI_TROPHY_ICON ICON "src/resources/icons/Trophy.ico"
IDI_CLOUD_ICON ICON "src/resources/icons/HappyCloud.ico"
IDI_CHICKEN_ICON ICON "src/resources/icons/Chicken.ico"
5 changes: 4 additions & 1 deletion StardewValleyApp/src/main/gui/FishDetailsWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,14 @@ void FishDetailsWindow::setTime(const string& start, const string& end) {
else {
QStringList startSplit = QString::fromStdString(start).split(", ");
QStringList endSplit = QString::fromStdString(end).split(", ");
qDebug() << startSplit << endSplit;

if (startSplit.size() == 2 && endSplit.size() == 2) {
timeLabel->setText(timeText + startSplit[0] + "-" + endSplit[0] + " and " + startSplit[1] + "-" + endSplit[1]);
}
timeLabel->setText(timeText + QString::fromStdString(start) + "-" + QString::fromStdString(end));
else {
timeLabel->setText(timeText + QString::fromStdString(start) + "-" + QString::fromStdString(end));
}

}
}
Expand Down
151 changes: 135 additions & 16 deletions StardewValleyApp/src/main/gui/FishManagementController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,44 +35,67 @@ void FishManagementController::setupLayout() {
allFilterLayout->addWidget(allButtonFilter);
ui.filtersLayout->addWidget(allWidgetFilter);*/

vector<char> seasonDetailBoxImage = service.getImageByName("DescriptionPanel");
DetailBox* seasonDetailBox = new DetailBox("Filter by Season", seasonDetailBoxImage);

// => CREATING FILTER BOXES
vector<char> descriptionPanel = service.getImageByName("DescriptionPanel");
DetailBox* seasonDetailBox = new DetailBox("Filter by Season", descriptionPanel);
seasonDetailBox->setCornerRadius(0);
seasonDetailBox->addButton("Spring");
seasonDetailBox->addButton("Summer");
seasonDetailBox->addButton("Fall");
seasonDetailBox->addButton("Winter");
vector<char> seasonButtonFilterImage = service.getImageByName("Seasons_On_A_Frame");
HoverButton* seasonButtonFilter = new HoverButton(seasonButtonFilterImage, "", 70, 70, seasonDetailBox);
//vector<char> seasonButtonFilterImage = service.getImageByName("Bream");
HoverButton* seasonButtonFilter = new HoverButton(descriptionPanel, "S", 70, 70, seasonDetailBox);
ui.filtersLayout->addWidget(seasonButtonFilter);

connect(seasonDetailBox, &DetailBox::buttonClicked, this, &FishManagementController::handleDetailBoxButtonClicked);

vector<char> weatherDetailBoxImage = service.getImageByName("DescriptionPanel");
DetailBox* weatherDetailBox = new DetailBox("Filter by Weather", weatherDetailBoxImage);
DetailBox* weatherDetailBox = new DetailBox("Filter by Weather", descriptionPanel);
weatherDetailBox->setCornerRadius(0);
weatherDetailBox->addButton("Sun");
weatherDetailBox->addButton("Rain");
weatherDetailBox->addButton("Wind");
vector<char> weatherButtonFilterImage = service.getImageByName("Weather_On_A_Frame");
HoverButton* weatherButtonFilter = new HoverButton(weatherButtonFilterImage, "", 70, 70, weatherDetailBox);
//vector<char> weatherButtonFilterImage = service.getImageByName("Bream");
HoverButton* weatherButtonFilter = new HoverButton(descriptionPanel, "W", 70, 70, weatherDetailBox);
ui.filtersLayout->addWidget(weatherButtonFilter);

connect(weatherDetailBox, &DetailBox::buttonClicked, this, &FishManagementController::handleDetailBoxButtonClicked);

vector<char> locationDetailBoxImage = service.getImageByName("DescriptionPanel");
DetailBox* locationDetailBox = new DetailBox("Filter by Location", locationDetailBoxImage);
DetailBox* locationDetailBox = new DetailBox("Filter by Location", descriptionPanel);
locationDetailBox->setCornerRadius(0);
vector<string> locations = service.getAllLocations();
for (const string& location : locations) {
locationDetailBox->addButton(location);
}
vector<char> locationButtonFilterImage = service.getImageByName("Locations_On_A_Frame");
HoverButton* locationButtonFilter = new HoverButton(locationButtonFilterImage, "", 70, 70, locationDetailBox);
//vector<char> locationButtonFilterImage = service.getImageByName("Bream");
HoverButton* locationButtonFilter = new HoverButton(descriptionPanel, "L", 70, 70, locationDetailBox);
ui.filtersLayout->addWidget(locationButtonFilter);

connect(locationDetailBox, &DetailBox::buttonClicked, this, &FishManagementController::handleDetailBoxButtonClicked);
// <= END


// => TIME SLIDER
BackgroundWidget* sliderWidget = new BackgroundWidget(descriptionPanel);
rangeSlider = new RangeSlider(Qt::Horizontal, RangeSlider::DoubleHandles, this);
rangeSlider->SetRange(0, 20);
rangeSlider->SetLowerValue(0);
rangeSlider->SetUpperValue(20);
sliderWidget->setFixedSize(70, 50);

QVBoxLayout* layout = new QVBoxLayout(sliderWidget);
layout->addWidget(rangeSlider);
layout->setContentsMargins(5, 10, 5, 10);

ui.filtersLayout->addWidget(sliderWidget);

connect(rangeSlider, &RangeSlider::lowerValueChanged, this, &FishManagementController::onLowerValueChanged);
connect(rangeSlider, &RangeSlider::upperValueChanged, this, &FishManagementController::onUpperValueChanged);
// <= END



// => LINE EDIT WIDGET
ui.filteringCondition->setStyleSheet("QLineEdit {"
"background: transparent;"
"border: none;"
Expand All @@ -84,11 +107,64 @@ void FishManagementController::setupLayout() {
QVBoxLayout* lineEditLayout = new QVBoxLayout();
lineEditWidget->setLayout(lineEditLayout);
lineEditLayout->addWidget(ui.filteringCondition);
lineEditWidget->setMaximumWidth(641);

ui.FilteringOptionLayout->addWidget(lineEditWidget);
ui.FilteringOptionLayout->setAlignment(Qt::AlignLeft);
// <= END



// => TEXT EDIT WIDGET
ui.dataFiltersLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);

vector<char> verticalPanel = service.getImageByName("LargePanel");
BackgroundWidget* filterChoosesWidget = new BackgroundWidget(verticalPanel);
/*QWidget* filterChoosesWidget = new QWidget();*/
QVBoxLayout* filterChoosesLayout = new QVBoxLayout(filterChoosesWidget);
filterChoosesLayout->setContentsMargins(5, 10, 5, 10);
filterChoosesWidget->setFixedWidth(70);

QString styleSheet = "QTextEdit {"
"background: transparent;"
"border: none;"
"font-size: 10px;"
"}";

seasonText = new QTextEdit();
seasonText->setStyleSheet(styleSheet);
seasonText->setText("Season: ?");

weatherText = new QTextEdit();
weatherText->setStyleSheet(styleSheet);
weatherText->setText("Weather: ?");

locationText = new QTextEdit();
locationText->setStyleSheet(styleSheet);
locationText->setText("Location: ?");

startTimeText = new QTextEdit();
startTimeText->setStyleSheet(styleSheet);
startTimeText->setText("Start time:\n6AM");
startTimeText->setReadOnly(true);

endTimeText = new QTextEdit();
endTimeText->setStyleSheet(styleSheet);
endTimeText->setText("End time:\n2AM");
endTimeText->setReadOnly(true);

filterChoosesLayout->addWidget(seasonText);
filterChoosesLayout->addWidget(weatherText);
filterChoosesLayout->addWidget(locationText);
filterChoosesLayout->addWidget(startTimeText);
filterChoosesLayout->addWidget(endTimeText);

// 3. Add fish layout
ui.dataFiltersLayout->addWidget(filterChoosesWidget);
// <= END



// => FISH LAYOUT
vector<char> backgroundWidgetImage = service.getImageByName("EmptyPanel");
backgroundWidget = new BackgroundWidget(backgroundWidgetImage);
backgroundWidget->setFixedSize(640, 500);
Expand All @@ -99,8 +175,11 @@ void FishManagementController::setupLayout() {
backgroundWidget->setLayout(fishLayout);

populateFishLayout(service.getAllFish(username));
// <= END



// 5. Add close button
// => CLOSE BUTTON
closeButtonLayout = new QHBoxLayout();
closeButtonLayout->setAlignment(Qt::AlignRight);
fishLayout->addLayout(closeButtonLayout);
Expand All @@ -111,10 +190,9 @@ void FishManagementController::setupLayout() {
closeButtonLayout->addWidget(closeButton);

connect(closeButton, &QPushButton::clicked, this, &FishManagementController::on_closeButton_clicked);
// <= END

// 6. Add the BackgroundWidget to the layout
ui.fishAndFiltersLayout->addWidget(backgroundWidget);
//qDebug() << backgroundWidget->size();
}


Expand Down Expand Up @@ -202,6 +280,47 @@ void FishManagementController::onFishClicked(QMouseEvent* event) {
}


void FishManagementController::onLowerValueChanged(int lowerValue) {
QTime startTime = timeMap.value(lowerValue, QTime());
QTime endTime = timeMap.value(rangeSlider->GetUpperValue(), QTime());

startTimeText->setText("Start time:\n" + startTime.toString("hAP"));
endTimeText->setText("End time:\n" + endTime.toString("hAP"));

populateFishByTimeInterval(startTime, endTime);
}

void FishManagementController::onUpperValueChanged(int upperValue) {
QTime endTime = timeMap.value(upperValue, QTime());
QTime startTime = timeMap.value(rangeSlider->GetLowerValue(), QTime());

startTimeText->setText("Start time:\n" + startTime.toString("hAP"));
endTimeText->setText("End time:\n" + endTime.toString("hAP"));

populateFishByTimeInterval(startTime, endTime);
}

void FishManagementController::populateFishByTimeInterval(const QTime& startTime, const QTime& endTime) {
qDebug() << "Start time: " << startTime.toString("hAP");
qDebug() << "End time: " << endTime.toString("hAP");

//vector<Fish> allFish = service.getAllFish();
//vector<Fish> filteredFish;

//for (const Fish& fish : allFish) {
// // Parse the catching times from strings
// QTime fishStart = QTime::fromString(fish.getStartCatchingHour(), "hAP");
// QTime fishEnd = QTime::fromString(fish.getEndCatchingHour(), "hAP");

// // Ensure the fish start and end times are within the selected interval
// if (fishStart >= startTime && fishEnd <= endTime) {
// filteredFish.push_back(fish);
// }
//}

//populateFishLayout(filteredFish);
}


void FishManagementController::handleDetailBoxButtonClicked(const string& name) {
qDebug() << "DetailBox button clicked: " << QString::fromStdString(name);
Expand Down
35 changes: 35 additions & 0 deletions StardewValleyApp/src/main/gui/FishManagementController.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "../utils/HoverButton.h"
#include "../utils/ClickableLabel.h"
#include "../utils/FishLabel.h"
#include "../utils/RangeSlider.h"
#include "../service/Service.h"
#include "../gui/FishDetailsWindow.h"
#include <QMainWindow>
Expand All @@ -18,6 +19,8 @@
#include <QDebug>
#include <string>
#include <vector>
#include <QTime>
#include <QTextEdit>
#include "ui_FishManagementController.h"

using namespace std;
Expand All @@ -42,6 +45,34 @@ class FishManagementController : public QMainWindow, public ICheckBoxObserver
bool isDragging;
QPoint dragStartPosition;
QWidget* dragHandle;
QMap<int, QTime> timeMap = {
{0, QTime::fromString("6am", "hAP")},
{1, QTime::fromString("7am", "hAP")},
{2, QTime::fromString("8am", "hAP")},
{3, QTime::fromString("9am", "hAP")},
{4, QTime::fromString("10am", "hAP")},
{5, QTime::fromString("11am", "hAP")},
{6, QTime::fromString("12pm", "hAP")},
{7, QTime::fromString("1pm", "hAP")},
{8, QTime::fromString("2pm", "hAP")},
{9, QTime::fromString("3pm", "hAP")},
{10, QTime::fromString("4pm", "hAP")},
{11, QTime::fromString("5pm", "hAP")},
{12, QTime::fromString("6pm", "hAP")},
{13, QTime::fromString("7pm", "hAP")},
{14, QTime::fromString("8pm", "hAP")},
{15, QTime::fromString("9pm", "hAP")},
{16, QTime::fromString("10pm", "hAP")},
{17, QTime::fromString("11pm", "hAP")},
{18, QTime::fromString("12am", "hAP")},
{19, QTime::fromString("1am", "hAP")},
{20, QTime::fromString("2am", "hAP")}
};
QTextEdit* startTimeText;
QTextEdit* endTimeText;
QTextEdit* seasonText;
QTextEdit* weatherText;
QTextEdit* locationText;

void setupLayout();
void populateFishLayout(const vector<Fish>& fishList);
Expand All @@ -54,10 +85,14 @@ class FishManagementController : public QMainWindow, public ICheckBoxObserver
QLabel* fishLabel;
QPixmap fishPixmap;
QPushButton* closeButton;
RangeSlider* rangeSlider;


private slots:
void onFishClicked(QMouseEvent* event);
void onLowerValueChanged(int lowerValue);
void onUpperValueChanged(int upperValue);
void populateFishByTimeInterval(const QTime& startTime, const QTime& endTime);
void mousePressEvent(QMouseEvent* event);
void mouseMoveEvent(QMouseEvent* event);
void mouseReleaseEvent(QMouseEvent* event);
Expand Down
Loading

0 comments on commit 8718dc0

Please sign in to comment.