m_clipId(clipId)
{
setSizeHint(0, QSize(65, QFontInfo(font(1)).pixelSize() * 2));
- setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled);
setData(0, Qt::DecorationRole, KIcon("folder").pixmap(sizeHint(0)));
//setIcon(0, KIcon("folder").pixmap(sizeHint(0)));
setToolTip(0, "<b>" + i18n("Folder"));
setText(0, name);
}
-
+void FolderProjectItem::switchIcon()
+{
+ setData(0, Qt::DecorationRole, isExpanded() ? KIcon("folder-open").pixmap(sizeHint(0)) : KIcon("folder").pixmap(sizeHint(0)));
+}
QString clipId() const;
const QString groupName() const;
void setGroupName(const QString name);
+ void switchIcon();
/** Make sure folders appear on top of the tree widget */
virtual bool operator<(const QTreeWidgetItem &other)const {
QTreeWidgetItem(parent, PROJECTCLIPTYPE)
{
setSizeHint(0, QSize(itemHeight * 3, itemHeight));
- if (clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
- else setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ 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");
QTreeWidgetItem(parent, PROJECTCLIPTYPE)
{
setSizeHint(0, QSize(itemHeight * 3, itemHeight));
- if (clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
- else setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ 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");
#include <QMenu>
#include <QProcess>
#include <QHeaderView>
+#include <QInputDialog>
ProjectList::ProjectList(QWidget *parent) :
QWidget(parent),
{
ProjectItem *item = getItemById(id);
if (item) {
- item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+ item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled);
if (item->referencedClip()) {
item->referencedClip()->setPlaceHolder(true);
if (m_render == NULL) kDebug() << "********* ERROR, NULL RENDR";
ProjectItem *item = getItemById(id);
if (item == NULL)
return;
- item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled);
if (item->referencedClip()) { // && item->referencedClip()->checkHash() == false) {
item->setProperty("file_hash", QString());
slotReloadClip(id);
} else {
ProjectItem *item = static_cast <ProjectItem *>(selected.at(i));
ids << item->clipId();
- if (item->numReferences() > 0 &&KMessageBox::questionYesNo(this, i18np("Delete clip <b>%2</b>?<br />This will also remove the clip in timeline", "Delete clip <b>%2</b>?<br />This will also remove its %1 clips in timeline", item->numReferences(), item->names().at(1)), i18n("Delete Clip")) != KMessageBox::Yes)
+ if (item->numReferences() > 0 && KMessageBox::questionYesNo(this, i18np("Delete clip <b>%2</b>?<br />This will also remove the clip in timeline", "Delete clip <b>%2</b>?<br />This will also remove its %1 clips in timeline", item->numReferences(), item->names().at(1)), i18n("Delete Clip")) != KMessageBox::Yes)
return;
}
}
if (clip->isPlaceHolder() == false)
requestClipInfo(clip->toXML(), clip->getId());
else if (!clip->isPlaceHolder())
- item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+ item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled);
} else {
if (item->data(0, Qt::DecorationRole).isNull())
requestClipThumbnail(clip->getId());
{
// Build list of mime types
QStringList mimeTypes = QStringList() << "application/x-kdenlive" << "application/x-kdenlivetitle" << "video/mlt-playlist" << "text/plain"
- << "video/x-flv" << "application/vnd.rn-realmedia" << "video/x-dv" << "video/dv" << "video/x-msvideo" << "video/x-matroska" << "video/mpeg" << "video/ogg" << "video/x-ms-wmv" << "video/mp4" << "video/quicktime"
- << "audio/x-flac" << "audio/x-matroska" << "audio/mp4" << "audio/mpeg" << "audio/x-mp3" << "audio/ogg" << "audio/x-wav" << "application/ogg"
- << "image/gif" << "image/jpeg" << "image/png" << "image/x-tga" << "image/x-bmp" << "image/svg+xml" << "image/tiff" << "image/x-xcf" << "image/x-xcf-gimp" << "image/x-vnd.adobe.photoshop" << "image/x-pcx" << "image/x-exr";
+ << "video/x-flv" << "application/vnd.rn-realmedia" << "video/x-dv" << "video/dv" << "video/x-msvideo" << "video/x-matroska" << "video/mpeg" << "video/ogg" << "video/x-ms-wmv" << "video/mp4" << "video/quicktime"
+ << "audio/x-flac" << "audio/x-matroska" << "audio/mp4" << "audio/mpeg" << "audio/x-mp3" << "audio/ogg" << "audio/x-wav" << "application/ogg"
+ << "image/gif" << "image/jpeg" << "image/png" << "image/x-tga" << "image/x-bmp" << "image/svg+xml" << "image/tiff" << "image/x-xcf" << "image/x-xcf-gimp" << "image/x-vnd.adobe.photoshop" << "image/x-pcx" << "image/x-exr";
QString allExtensions;
foreach(const QString& mimeType, mimeTypes) {
item->setProperties(properties, metadata);
if (item->referencedClip()->isPlaceHolder() && producer->is_valid()) {
item->referencedClip()->setValid();
- item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled);
toReload = clipId;
}
//Q_ASSERT_X(item->referencedClip(), "void ProjectList::slotReplyGetFileProperties", QString("Item with groupName %1 does not have a clip associated").arg(item->groupName()).toLatin1());
int max = m_doc->clipManager()->clipsCount();
if (item && m_infoQueue.isEmpty() && m_thumbnailQueue.isEmpty()) {
m_listView->setCurrentItem(item);
+ if (item->parent()) {
+ if (item->parent()->type() == PROJECTFOLDERTYPE)
+ static_cast <FolderProjectItem *>(item->parent())->switchIcon();
+ }
emit clipSelected(item->referencedClip());
} else {
emit displayMessage(i18n("Loading clips"), (int)(100 *(max - m_infoQueue.count()) / max));
{
if (event->key() == Qt::Key_Return) {
QTreeWidgetItem *it = currentItem();
- if (it) it->setExpanded(!it->isExpanded());
+ if (it) {
+ it->setExpanded(!it->isExpanded());
+ if (it->type() == PROJECTFOLDERTYPE) {
+ static_cast <FolderProjectItem *>(it)->switchIcon();
+ }
+ }
} else QTreeWidget::keyPressEvent(event);
}
int offset = pix.width() + indentation();
if (event->pos().x() < offset) {
it->setExpanded(!it->isExpanded());
+ static_cast <FolderProjectItem *>(it)->switchIcon();
event->accept();
} else QTreeWidget::mouseDoubleClickEvent(event);
}
}
// virtual
-void ProjectListView::dragMoveEvent(QDragMoveEvent * event)
+void ProjectListView::dragLeaveEvent(QDragLeaveEvent *)
{
- //event->setDropAction(Qt::MoveAction);
- if (event->mimeData()->hasText()) {
- event->acceptProposedAction();
- }
// stop playing because we get a crash otherwise when fetching the thumbnails
emit pauseMonitor();
}
Qt::DropActions ProjectListView::supportedDropActions() const
{
// returns what actions are supported when dropping
- return Qt::MoveAction;
+ return Qt::MoveAction | Qt::CopyAction;
}
#include "projectlistview.moc"
virtual void dropEvent(QDropEvent *event);
virtual QStringList mimeTypes() const;
virtual Qt::DropActions supportedDropActions() const;
- virtual void dragMoveEvent(QDragMoveEvent * event);
+ virtual void dragLeaveEvent(QDragLeaveEvent *);
virtual void keyPressEvent(QKeyEvent * event);
public slots:
QTreeWidgetItem(parent, PROJECTSUBCLIPTYPE), m_in(in), m_out(out), m_description(description)
{
setSizeHint(0, QSize(65, 30));
- setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled);
QString name = Timecode::getStringTimecode(in, KdenliveSettings::project_fps());
setText(0, name);
setText(1, description);