]> git.sesse.net Git - kdenlive/commitdiff
Merge branch 'buildsystem' into next
authorAlberto Villa <avilla@FreeBSD.org>
Wed, 9 Nov 2011 01:10:17 +0000 (02:10 +0100)
committerAlberto Villa <avilla@FreeBSD.org>
Wed, 9 Nov 2011 01:10:17 +0000 (02:10 +0100)
1  2 
src/mainwindow.cpp
src/monitor.cpp
src/projectlist.cpp

diff --combined src/mainwindow.cpp
index edeb2e48c298696eb38204d70cd1543ed4e1498f,f41a7fb1ac1502f819a5bd0457c94869eebd2af3..de8c7494bd4f27cf42e607b60b0da9c49ce7ee84
  #include "renderwidget.h"
  #include "renderer.h"
  #include "audiosignal.h"
- #ifndef NO_JOGSHUTTLE
+ #ifdef USE_JOGSHUTTLE
  #include "jogshuttle.h"
  #include "jogaction.h"
  #include "jogshuttleconfig.h"
- #endif /* NO_JOGSHUTTLE */
+ #endif
  #include "clipproperties.h"
  #include "wizard.h"
- #include "editclipcommand.h"
+ #include "commands/editclipcommand.h"
  #include "titlewidget.h"
  #include "markerdialog.h"
  #include "clipitem.h"
@@@ -59,8 -59,8 +59,8 @@@
  #include "colorscopes/waveform.h"
  #include "colorscopes/rgbparade.h"
  #include "colorscopes/histogram.h"
- #include "audiospectrum.h"
- #include "spectrogram.h"
+ #include "audioscopes/audiospectrum.h"
+ #include "audioscopes/spectrogram.h"
  #include "archivewidget.h"
  #include "databackup/backupwidget.h"
  
  #include <KFileItem>
  #include <KNotification>
  #include <KNotifyConfigWidget>
- #if KDE_IS_VERSION(4,3,80)
  #include <knewstuff3/downloaddialog.h>
  #include <knewstuff3/knewstuffaction.h>
- #else
- #include <knewstuff2/engine.h>
- #include <knewstuff2/ui/knewstuffaction.h>
- #define KNS3 KNS
- #endif /* KDE_IS_VERSION(4,3,80) */
  #include <KToolBar>
  #include <KColorScheme>
  #include <KProgressDialog>
@@@ -143,10 -137,10 +137,10 @@@ MainWindow::MainWindow(const QString &M
      m_activeTimeline(NULL),
      m_recMonitor(NULL),
      m_renderWidget(NULL),
- #ifndef NO_JOGSHUTTLE
+ #ifdef USE_JOGSHUTTLE
      m_jogProcess(NULL),
      m_jogShuttle(NULL),
- #endif /* NO_JOGSHUTTLE */
+ #endif
      m_findActivated(false),
      m_stopmotion(NULL)
  {   
      m_clipMonitorDock->setObjectName("clip_monitor");
      m_clipMonitor = new Monitor("clip", m_monitorManager, QString(), m_timelineArea);
      m_clipMonitorDock->setWidget(m_clipMonitor);
 +    
 +    // Connect the project list
      connect(m_projectList, SIGNAL(clipSelected(DocClipBase *, QPoint)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint)));
      connect(m_projectList, SIGNAL(raiseClipMonitor()), m_clipMonitor, SLOT(activateMonitor()));
 -    
 +    connect(m_projectList, SIGNAL(loadingIsOver()), this, SLOT(slotElapsedTime()));
 +    connect(m_projectList, SIGNAL(displayMessage(const QString&, int)), this, SLOT(slotGotProgressInfo(const QString&, int)));
 +    connect(m_projectList, SIGNAL(updateRenderStatus()), this, SLOT(slotCheckRenderStatus()));
 +    connect(m_projectList, SIGNAL(clipNeedsReload(const QString&)),this, SLOT(slotUpdateClip(const QString &)));
 +    connect(m_projectList, SIGNAL(updateProfile(const QString &)), this, SLOT(slotUpdateProjectProfile(const QString &)));
 +    connect(m_projectList, SIGNAL(refreshClip(const QString &, bool)), m_monitorManager, SLOT(slotRefreshCurrentMonitor()));
 +    connect(m_projectList, SIGNAL(findInTimeline(const QString&)), this, SLOT(slotClipInTimeline(const QString&)));
 +    connect(m_clipMonitor, SIGNAL(zoneUpdated(QPoint)), m_projectList, SLOT(slotUpdateClipCut(QPoint)));
 +
      m_projectMonitorDock = new QDockWidget(i18n("Project Monitor"), this);
      m_projectMonitorDock->setObjectName("project_monitor");
      m_projectMonitor = new Monitor("project", m_monitorManager, QString());
      connect(m_recMonitor, SIGNAL(addProjectClip(KUrl)), this, SLOT(slotAddProjectClip(KUrl)));
      connect(m_recMonitor, SIGNAL(addProjectClipList(KUrl::List)), this, SLOT(slotAddProjectClipList(KUrl::List)));
      connect(m_recMonitor, SIGNAL(showConfigDialog(int, int)), this, SLOT(slotPreferences(int, int)));
- #endif
+ #endif /* ! Q_WS_MAC */
      m_monitorManager->initMonitors(m_clipMonitor, m_projectMonitor, m_recMonitor);
  
      m_notesDock = new QDockWidget(i18n("Project Notes"), this);
      connect(m_notesWidget, SIGNAL(seekProject(int)), m_projectMonitor->render, SLOT(seekToFrame(int)));
      
      m_notesWidget->setTabChangesFocus(true);
- #if KDE_IS_VERSION(4,4,0)
      m_notesWidget->setClickMessage(i18n("Enter your project notes here ..."));
- #endif
      m_notesDock->setWidget(m_notesWidget);
      addDockWidget(Qt::TopDockWidgetArea, m_notesDock);
  
  
      connect(m_projectMonitorDock, SIGNAL(visibilityChanged(bool)), m_projectMonitor, SLOT(refreshMonitor(bool)));
      connect(m_clipMonitorDock, SIGNAL(visibilityChanged(bool)), m_clipMonitor, SLOT(refreshMonitor(bool)));
 -    //connect(m_monitorManager, SIGNAL(connectMonitors()), this, SLOT(slotConnectMonitors()));
      connect(m_monitorManager, SIGNAL(checkColorScopes()), this, SLOT(slotUpdateColorScopes()));
      connect(m_monitorManager, SIGNAL(clearScopes()), this, SLOT(slotClearColorScopes()));
      connect(m_effectList, SIGNAL(addEffect(const QDomElement)), this, SLOT(slotAddEffect(const QDomElement)));
          m_projectList->slotAddClip(urls);
      }
  
- #ifndef NO_JOGSHUTTLE
+ #ifdef USE_JOGSHUTTLE
      activateShuttleDevice();
- #endif /* NO_JOGSHUTTLE */
+ #endif
      m_projectListDock->raise();
  
      actionCollection()->addAssociatedWidget(m_clipMonitor->container());
@@@ -829,7 -812,7 +821,7 @@@ void MainWindow::slotReloadEffects(
      m_effectList->reloadEffectList(m_effectsMenu, m_effectActions);
  }
  
- #ifndef NO_JOGSHUTTLE
+ #ifdef USE_JOGSHUTTLE
  void MainWindow::activateShuttleDevice()
  {
      delete m_jogShuttle;
      connect(m_jogShuttle, SIGNAL(forward(double)), m_monitorManager, SLOT(slotForward(double)));
      connect(m_jogShuttle, SIGNAL(action(const QString&)), this, SLOT(slotDoAction(const QString&)));
  }
- #endif /* NO_JOGSHUTTLE */
+ #endif /* USE_JOGSHUTTLE */
  
  void MainWindow::slotDoAction(const QString& action_name)
  {
@@@ -2260,7 -2243,7 +2252,7 @@@ void MainWindow::slotEditProjectSetting
      if (w->exec() == QDialog::Accepted) {
          QString profile = w->selectedProfile();
          m_activeDocument->setProjectFolder(w->selectedFolder());
- #ifndef   Q_WS_MAC
+ #ifndef Q_WS_MAC
          m_recMonitor->slotUpdateCaptureFolder(m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash));
  #endif
          if (m_renderWidget) m_renderWidget->setDocumentPath(m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash));
@@@ -2449,6 -2432,7 +2441,6 @@@ void MainWindow::connectDocument(TrackV
              disconnect(m_notesWidget, SIGNAL(textChanged()), m_activeDocument, SLOT(setModified()));
              disconnect(m_clipMonitor, SIGNAL(zoneUpdated(QPoint)), m_activeDocument, SLOT(setModified()));
              disconnect(m_projectList, SIGNAL(projectModified()), m_activeDocument, SLOT(setModified()));
 -            disconnect(m_projectList, SIGNAL(updateProfile(const QString &)), this, SLOT(slotUpdateProjectProfile(const QString &)));
  
              disconnect(m_projectMonitor->render, SIGNAL(refreshDocumentProducers(bool, bool)), m_activeDocument, SLOT(checkProjectClips(bool, bool)));
  
              disconnect(m_activeTimeline->projectView(), SIGNAL(activateDocumentMonitor()), m_projectMonitor, SLOT(activateMonitor()));
              disconnect(m_activeTimeline, SIGNAL(zoneMoved(int, int)), this, SLOT(slotZoneMoved(int, int)));
              disconnect(m_projectList, SIGNAL(loadingIsOver()), m_activeTimeline->projectView(), SLOT(slotUpdateAllThumbs()));
 -            disconnect(m_projectList, SIGNAL(displayMessage(const QString&, int)), this, SLOT(slotGotProgressInfo(const QString&, int)));
 -            disconnect(m_projectList, SIGNAL(updateRenderStatus()), this, SLOT(slotCheckRenderStatus()));
 -            disconnect(m_projectList, SIGNAL(clipNeedsReload(const QString&)), this, SLOT(slotUpdateClip(const QString &)));
              disconnect(m_projectList, SIGNAL(refreshClip(const QString &)), m_activeTimeline->projectView(), SLOT(slotRefreshThumbs(const QString &)));
              m_effectStack->clear();
          }
          //m_activeDocument->setRenderer(NULL);
 -        disconnect(m_projectList, SIGNAL(refreshClip(const QString &, bool)), m_monitorManager, SLOT(slotRefreshCurrentMonitor()));
          m_clipMonitor->stop();
      }
      KdenliveSettings::setCurrent_profile(doc->profilePath());
      m_projectList->setDocument(doc);
      m_transitionConfig->updateProjectFormat(doc->mltProfile(), doc->timecode(), doc->tracksList());
      m_effectStack->updateProjectFormat(doc->mltProfile(), doc->timecode());
 -    connect(m_projectList, SIGNAL(refreshClip(const QString &, bool)), m_monitorManager, SLOT(slotRefreshCurrentMonitor()));
      connect(m_projectList, SIGNAL(refreshClip(const QString &, bool)), trackView->projectView(), SLOT(slotRefreshThumbs(const QString &, bool)));
 -    connect(m_projectList, SIGNAL(clipNeedsReload(const QString&)),this, SLOT(slotUpdateClip(const QString &)));
  
      connect(m_projectList, SIGNAL(projectModified()), doc, SLOT(setModified()));
 -    connect(m_projectList, SIGNAL(updateProfile(const QString &)), this, SLOT(slotUpdateProjectProfile(const QString &)));
      connect(m_projectList, SIGNAL(clipNameChanged(const QString, const QString)), trackView->projectView(), SLOT(clipNameChanged(const QString, const QString)));
  
 -    connect(m_projectList, SIGNAL(findInTimeline(const QString&)), this, SLOT(slotClipInTimeline(const QString&)));
 -
 -
      //connect(trackView, SIGNAL(cursorMoved()), m_projectMonitor, SLOT(activateMonitor()));
      connect(trackView, SIGNAL(insertTrack(int)), this, SLOT(slotInsertTrack(int)));
      connect(trackView, SIGNAL(deleteTrack(int)), this, SLOT(slotDeleteTrack(int)));
      connect(trackView->projectView(), SIGNAL(forceClipProcessing(const QString &)), m_projectList, SLOT(slotForceProcessing(const QString &)));
      connect(m_projectMonitor, SIGNAL(renderPosition(int)), trackView, SLOT(moveCursorPos(int)));
      connect(m_projectMonitor, SIGNAL(zoneUpdated(QPoint)), trackView, SLOT(slotSetZone(QPoint)));
 -    connect(m_clipMonitor, SIGNAL(zoneUpdated(QPoint)), m_projectList, SLOT(slotUpdateClipCut(QPoint)));
      connect(m_projectMonitor, SIGNAL(zoneUpdated(QPoint)), doc, SLOT(setModified()));
      connect(m_clipMonitor, SIGNAL(zoneUpdated(QPoint)), doc, SLOT(setModified()));
      connect(m_projectMonitor, SIGNAL(durationChanged(int)), trackView, SLOT(setDuration(int)));
      connect(trackView->projectView(), SIGNAL(activateDocumentMonitor()), m_projectMonitor, SLOT(activateMonitor()));
      connect(trackView, SIGNAL(zoneMoved(int, int)), this, SLOT(slotZoneMoved(int, int)));
      connect(m_projectList, SIGNAL(loadingIsOver()), trackView->projectView(), SLOT(slotUpdateAllThumbs()));
 -    connect(m_projectList, SIGNAL(loadingIsOver()), this, SLOT(slotElapsedTime()));
 -    connect(m_projectList, SIGNAL(displayMessage(const QString&, int)), this, SLOT(slotGotProgressInfo(const QString&, int)));
 -    connect(m_projectList, SIGNAL(updateRenderStatus()), this, SLOT(slotCheckRenderStatus()));
  
  
      trackView->projectView()->setContextMenu(m_timelineContextMenu, m_timelineContextClipMenu, m_timelineContextTransitionMenu, m_clipTypeGroup, (QMenu*)(factory()->container("marker_menu", this)));
      m_activeDocument = doc;
      m_activeTimeline->updateProjectFps();
      m_activeDocument->checkProjectClips();
- #ifndef   Q_WS_MAC
+ #ifndef Q_WS_MAC
      m_recMonitor->slotUpdateCaptureFolder(m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash));
  #endif
      //Update the mouse position display so it will display in DF/NDF format by default based on the project setting.
@@@ -2656,7 -2654,7 +2648,7 @@@ void MainWindow::slotPreferences(int pa
  void MainWindow::slotUpdateCaptureFolder()
  {
  
- #ifndef   Q_WS_MAC
+ #ifndef Q_WS_MAC
      if (m_activeDocument) m_recMonitor->slotUpdateCaptureFolder(m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash));
      else m_recMonitor->slotUpdateCaptureFolder(KdenliveSettings::defaultprojectfolder());
  #endif
@@@ -2679,9 -2677,9 +2671,9 @@@ void MainWindow::updateConfiguration(
  
      // Update list of transcoding profiles
      loadTranscoders();
- #ifndef NO_JOGSHUTTLE
+ #ifdef USE_JOGSHUTTLE
      activateShuttleDevice();
- #endif /* NO_JOGSHUTTLE */
+ #endif
  
  }
  
@@@ -3669,7 -3667,6 +3661,6 @@@ void MainWindow::slotResizeItemEnd(
  int MainWindow::getNewStuff(const QString &configFile)
  {
      KNS3::Entry::List entries;
- #if KDE_IS_VERSION(4,3,80)
      KNS3::DownloadDialog dialog(configFile);
      dialog.exec();
      entries = dialog.changedEntries();
          if (entry.status() == KNS3::Entry::Installed)
              kDebug() << "// Installed files: " << entry.installedFiles();
      }
- #else
-     KNS::Engine engine(0);
-     if (engine.init(configFile))
-         entries = engine.downloadDialogModal(this);
-     foreach(KNS::Entry * entry, entries) {
-         if (entry->status() == KNS::Entry::Installed)
-             kDebug() << "// Installed files: " << entry->installedFiles();
-     }
- #endif /* KDE_IS_VERSION(4,3,80) */
      return entries.size();
  }
  
diff --combined src/monitor.cpp
index 4e017b54cd71af96380e9bdeacdbe91ca0c087aa,1090112d00ba652867d3109e2004f0d12de4d257..db3989406dee5d12be592f60ce96b2c36fd14ce3
@@@ -155,7 -155,7 +155,7 @@@ Monitor::Monitor(QString name, MonitorM
      createOpenGlWidget(m_videoBox, profile);
      monitorCreated = true;
      //m_glWidget->setFixedSize(width, height);
- #elif defined (USE_OPEN_GL)
+ #elif defined(USE_OPENGL)
      if (KdenliveSettings::openglmonitors()) {
          monitorCreated = createOpenGlWidget(m_videoBox, profile);
      }
          render = new Render(m_name, (int) m_monitorRefresh->winId(), profile, this);
          m_monitorRefresh->setRenderer(render);
      }
- #if defined (USE_OPEN_GL)
+ #ifdef USE_OPENGL
      else if (m_glWidget) {
          lay->addWidget(m_glWidget);
          m_videoBox->setLayout(lay);
@@@ -229,7 -229,7 +229,7 @@@ const QString Monitor::name() cons
      return m_name;
  }
  
- #if defined(Q_WS_MAC) || defined(USE_OPEN_GL)
+ #ifdef USE_OPENGL
  bool Monitor::createOpenGlWidget(QWidget *parent, const QString profile)
  {
      render = new Render(m_name, 0, profile, this);
@@@ -577,9 -577,7 +577,7 @@@ void Monitor::slotExtractCurrentFrame(
      KFileDialog *fs = new KFileDialog(KUrl(), "image/png", this);
      fs->setOperationMode(KFileDialog::Saving);
      fs->setMode(KFile::File);
- #if KDE_IS_VERSION(4,2,0)
      fs->setConfirmOverwrite(true);
- #endif
      fs->setKeepLocation(true);
      fs->exec();
      QString path = fs->selectedFile();
@@@ -879,10 -877,7 +877,10 @@@ void Monitor::resetProfile(const QStrin
  {
      m_timePos->updateTimeCode(m_monitorManager->timecode());
      if (render == NULL) return;
 -    render->resetProfile(profile);
 +    if (!render->hasProfile(profile)) {
 +        activateMonitor();
 +        render->resetProfile(profile);
 +    }
      if (m_effectWidget)
          m_effectWidget->resetProfile(render);
  }
@@@ -917,7 -912,7 +915,7 @@@ void Monitor::slotSwitchMonitorInfo(boo
          if (m_overlay) return;
          if (m_monitorRefresh == NULL) {
              // Using OpenGL display
- #if defined(Q_WS_MAC) || defined(USE_OPEN_GL)
+ #ifdef USE_OPENGL
              if (m_glWidget->layout()) delete m_glWidget->layout();
              m_overlay = new Overlay();
              connect(m_overlay, SIGNAL(editMarker()), this, SLOT(slotEditMarker()));
@@@ -997,7 -992,7 +995,7 @@@ void Monitor::slotEffectScene(bool show
          if (m_monitorRefresh) {
              m_monitorRefresh->setVisible(!show);
          } else {
- #if defined(Q_WS_MAC) || defined(USE_OPEN_GL)
+ #ifdef USE_OPENGL
              m_glWidget->setVisible(!show);
  #endif
          }
          emit requestFrameForAnalysis(show);
          if (show) {
              m_effectWidget->getScene()->slotZoomFit();
 -            render->doRefresh();
          }
 +        render->doRefresh();
      }
  }
  
diff --combined src/projectlist.cpp
index 6923f3896fec6c87ffa342eeabab1959a6c58144,eef4da490b172a6017a3add22bd29c281ada6b58..44e2311d17536d952bad6afb2248cdf528ce87f4
@@@ -19,7 -19,7 +19,7 @@@
  
  #include "projectlist.h"
  #include "projectitem.h"
- #include "addfoldercommand.h"
+ #include "commands/addfoldercommand.h"
  #include "kdenlivesettings.h"
  #include "slideshowclip.h"
  #include "ui_colorclip_ui.h"
  #include "projectlistview.h"
  #include "timecodedisplay.h"
  #include "profilesdialog.h"
- #include "editclipcommand.h"
- #include "editclipcutcommand.h"
- #include "editfoldercommand.h"
- #include "addclipcutcommand.h"
+ #include "commands/editclipcommand.h"
+ #include "commands/editclipcutcommand.h"
+ #include "commands/editfoldercommand.h"
+ #include "commands/addclipcutcommand.h"
  
  #include "ui_templateclip_ui.h"
  
@@@ -1172,7 -1172,6 +1172,7 @@@ void ProjectList::slotResetProjectList(
      m_proxyThreads.clearFutures();
      m_thumbnailQueue.clear();
      m_listView->clear();
 +    m_listView->setEnabled(true);
      emit clipSelected(NULL);
      m_refreshed = false;
      m_allClipsProcessed = false;
@@@ -1666,11 -1665,11 +1666,11 @@@ void ProjectList::slotCheckForEmptyQueu
  {
      if (m_render->processingItems() == 0 && m_thumbnailQueue.isEmpty()) {
          if (!m_refreshed && m_allClipsProcessed) {
 +            m_refreshed = true;
              m_listView->setEnabled(true);
              slotClipSelected();
              QTimer::singleShot(500, this, SIGNAL(loadingIsOver()));
              emit displayMessage(QString(), -1);
 -            m_refreshed = true;
          }
          updateButtons();
      } else if (!m_refreshed) {
@@@ -1838,16 -1837,17 +1838,16 @@@ void ProjectList::slotReplyGetFilePrope
              }
          } else {
              int max = m_doc->clipManager()->clipsCount();
 -            emit displayMessage(i18n("Loading clips"), (int)(100 *(max - queue) / max));
 +            if (max > 0) emit displayMessage(i18n("Loading clips"), (int)(100 *(max - queue) / max));
          }
          if (m_allClipsProcessed) emit processNextThumbnail();
      }
 -    if (replace && item) {
 -        toReload = clipId;
 -    }
      if (!item) {
          // no item for producer, delete it
          delete producer;
 +        return;
      }
 +    if (replace) toReload = clipId;
      if (!toReload.isEmpty())
          emit clipNeedsReload(toReload);
  }
@@@ -2338,19 -2338,6 +2338,19 @@@ void ProjectList::slotGenerateProxy(
      QFile::remove(info.dest);
      
      setProxyStatus(info.dest, CREATINGPROXY);
 +    
 +    // Get the list of clips that will need to get progress info
 +    QTreeWidgetItemIterator it(m_listView);
 +    QList <ProjectItem *> processingItems;
 +    while (*it && !m_abortAllProxies) {
 +        if ((*it)->type() == PROJECTCLIPTYPE) {
 +            ProjectItem *item = static_cast <ProjectItem *>(*it);
 +            if (item->referencedClip()->getProperty("proxy") == info.dest) {
 +                processingItems.append(item);
 +            }
 +        }
 +        ++it;
 +    }
  
      // Special case: playlist clips (.mlt or .kdenlive project files)
      if (info.type == PLAYLIST) {
              }
              else {
                  QString log = QString(myProcess.readAll());
 -                processLogInfo(info.dest, &duration, log);
 +                processLogInfo(processingItems, &duration, log);
              }
              myProcess.waitForFinished(500);
          }
      // Make sure we don't block when proxy file already exists
      parameters << "-y";
      parameters << info.dest;
 -    kDebug()<<"// STARTING PROXY GEN: "<<parameters;
      QProcess myProcess;
      myProcess.setProcessChannelMode(QProcess::MergedChannels);
      myProcess.start("ffmpeg", parameters);
      myProcess.waitForStarted();
      int result = -1;
      int duration = 0;
 +   
      while (myProcess.state() != QProcess::NotRunning) {
          // building proxy file
          if (m_abortProxy.contains(info.dest) || m_abortAllProxies) {
          }
          else {
              QString log = QString(myProcess.readAll());
 -            processLogInfo(info.dest, &duration, log);
 +            processLogInfo(processingItems, &duration, log);
          }
          myProcess.waitForFinished(500);
      }
      myProcess.waitForFinished();
 +    m_abortProxy.removeAll(info.dest);
 +    m_processingProxy.removeAll(info.dest);
      if (result == -1) result = myProcess.exitStatus();
      if (result == 0) {
          // proxy successfully created
          QFile::remove(info.dest);
          setProxyStatus(info.dest, PROXYCRASHED);
      }
 -    m_abortProxy.removeAll(info.dest);
 -    m_processingProxy.removeAll(info.dest);
  }
  
  
 -void ProjectList::processLogInfo(const QString &path, int *duration, const QString &log)
 +void ProjectList::processLogInfo(QList <ProjectItem *>items, int *duration, const QString &log)
  {
      int progress;
      if (*duration == 0) {
              progress = numbers.at(0).toInt() * 3600 + numbers.at(1).toInt() * 60 + numbers.at(2).toDouble();
          }
          else progress = (int) time.toDouble();
 -        setProxyStatus(path, CREATINGPROXY, (int) (100.0 * progress / (*duration)));
 +        for (int i = 0; i < items.count(); i++)
 +            setProxyStatus(items.at(i), CREATINGPROXY, (int) (100.0 * progress / (*duration)));
      }
  }