]> git.sesse.net Git - kdenlive/blobdiff - src/projectitem.cpp
Fix hang on exit somewhere strange inside Qt on OS X.
[kdenlive] / src / projectitem.cpp
index 208bc5750477ee9413c2f35f7d8b87cf6662a76a..1f26d0f7ceb88ef2c9b68d05e1f57b7dac4908eb 100644 (file)
 #include <KIcon>
 
 const int DurationRole = Qt::UserRole + 1;
+const int itemHeight = 38;
 
 ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) :
         QTreeWidgetItem(parent, PROJECTCLIPTYPE)
 {
-    setSizeHint(0, QSize(65, 45));
-    setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+    setSizeHint(0, QSize(itemHeight * 3, itemHeight));
+    if (clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled);
+    else setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled);
     m_clip = clip;
     m_clipId = clip->getId();
     QString name = m_clip->getProperty("name");
@@ -42,7 +44,6 @@ ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) :
     if (m_clipType != UNKNOWN) slotSetToolTip();
     setText(0, name);
     setText(1, m_clip->description());
-    m_clip->askForAudioThumbs();
     GenTime duration = m_clip->duration();
     if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
     //setFlags(Qt::NoItemFlags);
@@ -52,8 +53,9 @@ ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) :
 ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) :
         QTreeWidgetItem(parent, PROJECTCLIPTYPE)
 {
-    setSizeHint(0, QSize(65, 45));
-    setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+    setSizeHint(0, QSize(itemHeight * 3, itemHeight));
+    if (clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled);
+    else setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled);
     m_clip = clip;
     m_clipId = clip->getId();
     QString name = m_clip->getProperty("name");
@@ -61,7 +63,6 @@ ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) :
     m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt();
     setText(0, name);
     setText(1, m_clip->description());
-    m_clip->askForAudioThumbs();
     GenTime duration = m_clip->duration();
     if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
     //setFlags(Qt::NoItemFlags);
@@ -73,6 +74,12 @@ ProjectItem::~ProjectItem()
 {
 }
 
+//static
+int ProjectItem::itemDefaultHeight()
+{
+    return itemHeight;
+}
+
 int ProjectItem::numReferences() const
 {
     if (!m_clip) return 0;
@@ -152,6 +159,7 @@ DocClipBase *ProjectItem::referencedClip()
 void ProjectItem::slotSetToolTip()
 {
     QString tip = "<b>";
+    if (m_clip->isPlaceHolder()) tip.append(i18n("Missing") + " | ");
     switch (m_clipType) {
     case AUDIO:
         tip.append(i18n("Audio clip") + "</b><br />" + clipUrl().path());
@@ -218,7 +226,6 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con
     }
     m_clip->setProperties(attributes);
     m_clip->setMetadata(metadata);
-    m_clip->askForAudioThumbs();
 
     if (m_clip->description().isEmpty()) {
         if (metadata.contains("description")) {