mirror of
https://github.com/arabine/open-story-teller.git
synced 2025-12-07 17:23:32 +01:00
101 lines
3.5 KiB
C++
101 lines
3.5 KiB
C++
#include "resources_dock.h"
|
|
#include <QFileDialog>
|
|
#include <QStandardPaths>
|
|
|
|
ResourcesDock::ResourcesDock(StoryProject &project, ResourceModel &model)
|
|
: m_project(project)
|
|
, m_resourcesModel(model)
|
|
, DockWidgetBase(tr("Resources"), true)
|
|
{
|
|
setObjectName("ResourcesDock"); // used to save the state
|
|
|
|
m_uiOstResources.setupUi(this);
|
|
m_uiOstResources.resourcesView->setModel(&m_resourcesModel);
|
|
|
|
m_proxyModel.setSourceModel(&m_resourcesModel);
|
|
|
|
connect(m_uiOstResources.addImageButton, &QPushButton::clicked, [&](bool checked) {
|
|
|
|
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
|
|
".",
|
|
tr("Images (*.bmp *.png *.jpg)"));
|
|
|
|
if (std::filesystem::exists(fileName.toStdString()))
|
|
{
|
|
std::filesystem::path p(fileName.toStdString());
|
|
std::filesystem::path p2 = m_project.ImagesPath() / p.filename().generic_string();
|
|
std::filesystem::copy(p, p2, std::filesystem::copy_options::overwrite_existing);
|
|
|
|
Resource res;
|
|
|
|
std::string ext = p.extension();
|
|
ext.erase(ext.begin()); // remove '.' dot sign
|
|
std::transform(ext.begin(), ext.end(), ext.begin(), ::toupper);
|
|
|
|
res.format = ext;
|
|
res.type = "image";
|
|
res.file = p.filename().generic_string();
|
|
m_resourcesModel.Append(res);
|
|
}
|
|
});
|
|
|
|
connect(m_uiOstResources.addSoundButton, &QPushButton::clicked, [&](bool checked) {
|
|
|
|
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
|
|
".",
|
|
tr("Sound files (*.wav *.mp3)"));
|
|
|
|
if (std::filesystem::exists(fileName.toStdString()))
|
|
{
|
|
std::filesystem::path p(fileName.toStdString());
|
|
std::filesystem::path p2 = m_project.SoundsPath() / p.filename().generic_string();
|
|
std::filesystem::copy(p, p2, std::filesystem::copy_options::overwrite_existing);
|
|
|
|
Resource res;
|
|
|
|
std::string ext = p.extension();
|
|
ext.erase(ext.begin()); // remove '.' dot sign
|
|
std::transform(ext.begin(), ext.end(), ext.begin(), ::toupper);
|
|
|
|
res.format = ext;
|
|
res.type = "sound";
|
|
res.file = p.filename().generic_string();
|
|
m_resourcesModel.Append(res);
|
|
}
|
|
});
|
|
|
|
connect(m_uiOstResources.deleteButton, &QPushButton::clicked, [&](bool checked) {
|
|
QItemSelectionModel *selectionModel = m_uiOstResources.resourcesView->selectionModel();
|
|
// Récupération des lignes sélectionnées
|
|
QModelIndexList selectedRows = selectionModel->selectedRows();
|
|
|
|
if (selectedRows.count() > 0)
|
|
{
|
|
for (int i = 0; i < selectedRows.count(); i++)
|
|
{
|
|
m_resourcesModel.Delete(selectedRows.at(i).row());
|
|
}
|
|
}
|
|
});
|
|
|
|
connect(m_uiOstResources.chooseTitleImageButton, &QPushButton::clicked, [&](bool enable) {
|
|
emit sigChooseTitle(true);
|
|
});
|
|
|
|
connect(m_uiOstResources.chooseTitleSoundButton, &QPushButton::clicked, [&](bool enable) {
|
|
emit sigChooseTitle(false);
|
|
});
|
|
}
|
|
|
|
void ResourcesDock::SetTitleImage(const QString &name)
|
|
{
|
|
m_uiOstResources.titleImage->setText(name);
|
|
}
|
|
|
|
void ResourcesDock::SetTitleSound(const QString &name)
|
|
{
|
|
m_uiOstResources.titleSound->setText(name);
|
|
}
|
|
|
|
|