17 #include "importlayersdialog.h"
18 #include "ui_importlayersdialog.h"
20 #include <QProgressDialog>
23 #include "filemanager.h"
24 #include "filedialog.h"
25 #include "fileformat.h"
26 #include "layermanager.h"
27 #include "soundmanager.h"
29 #include "layersound.h"
30 #include "soundclip.h"
33 ImportLayersDialog::ImportLayersDialog(
QWidget *parent) :
43 ui->btnImportLayers->setEnabled(
false);
45 hideQuestionMark(*
this);
48 ImportLayersDialog::~ImportLayersDialog()
53 void ImportLayersDialog::setCore(
Editor *editor)
58 void ImportLayersDialog::getFileName()
61 ui->lwLayers->clear();
63 if (mFileName.
isEmpty()) {
return; }
67 void ImportLayersDialog::listWidgetChanged()
69 mItemsSelected.
clear();
70 for (
int i = 0; i < ui->lwLayers->count(); i++)
71 if (ui->lwLayers->item(i)->isSelected())
75 ui->btnImportLayers->setEnabled(
true);
77 ui->btnImportLayers->setEnabled(
false);
80 void ImportLayersDialog::importLayers()
82 Object*
object = mEditor->object();
83 int currentFrame = mEditor->currentFrame();
84 Q_ASSERT(ui->lwLayers->count() == mImportObject->getLayerCount());
86 for (
int i = 0; i < ui->lwLayers->count(); i++ )
93 mImportLayer = mImportObject->takeLayer(layerId);
94 mImportLayer->setName(mEditor->layers()->nameSuggestLayer(item->
text()));
95 loadKeyFrames(mImportLayer);
97 object->addLayer(mImportLayer);
99 if (mImportLayer->type() == Layer::SOUND)
103 while (count < layerSound->getNextKeyFramePosition(count))
105 int newKeyPos = layerSound->getNextKeyFramePosition(count);
107 clip = layerSound->getSoundClipWhichCovers(newKeyPos);
108 Status st = mEditor->sound()->loadSound(clip, clip->fileName());
114 mEditor->object()->modification();
116 mImportObject.reset();
118 mEditor->scrubTo(currentFrame);
121 void ImportLayersDialog::cancel()
126 void ImportLayersDialog::getLayers()
133 hideQuestionMark(progress);
139 connect(&fm, &FileManager::progressChanged, [&progress](
int p)
141 progress.setValue(p);
144 connect(&fm, &FileManager::progressRangeChanged, [&progress](
int max)
146 progress.setRange(0, max + 3);
148 mImportObject.reset(fm.load(mFileName));
150 ui->lwLayers->clear();
151 for (
int i = 0; i < mImportObject->getLayerCount(); i++)
153 const QString layerName = mImportObject->getLayer(i)->name();
154 const int layerId = mImportObject->getLayer(i)->id();
159 ui->lwLayers->addItem(item);
163 void ImportLayersDialog::loadKeyFrames(
Layer* importedLayer)
168 importedLayer->foreachKeyFrame([](
KeyFrame* k)
QString tr(const char *sourceText, const char *disambiguation, int n)
void processEvents(QEventLoop::ProcessEventsFlags flags)
void append(const T &value)
int toInt(bool *ok) const const
bool isEmpty() const const
bool isEmpty() const const
static QString getOpenFileName(QWidget *parent, FileType fileType, const QString &caption=QString())
Shows a file dialog which allows the user to select a file to open.
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString text() const const