From: Jean-Baptiste Mardelle Date: Sat, 29 Dec 2007 23:21:53 +0000 (+0000) Subject: Some work on project tree view X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=e61af07c733e27f80413dd44f504cd734a9878f3;p=kdenlive Some work on project tree view svn path=/branches/KDE4/; revision=1778 --- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d4153499..a9afc59b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,8 +18,8 @@ ${LIBFFMPEG_LIBRARY} kde4_add_ui_files(kdenlive_UI widgets/timeline_ui.ui - widgets/projectlist_ui.ui widgets/monitor_ui.ui + widgets/colorclip_ui.ui ) set(kdenlive_SRCS diff --git a/src/kdenliveui.rc b/src/kdenliveui.rc index f8d6be5c..1fc77ace 100644 --- a/src/kdenliveui.rc +++ b/src/kdenliveui.rc @@ -1,10 +1,11 @@ - + Main Toolbar + diff --git a/src/main.cpp b/src/main.cpp index cbfa0c24..52db06a4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,7 +7,7 @@ int main (int argc, char *argv[]) { - KAboutData aboutData( "Kdenlive", "kdenlive", + KAboutData aboutData( "kdenlive", "kdenlive", ki18n("Kdenlive"), "1.0", ki18n("A simple text area which can load and save."), KAboutData::License_GPL, diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 3d5c8e3a..822d82c8 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -29,21 +29,25 @@ MainWindow::MainWindow(QWidget *parent) setCentralWidget(m_timelineArea); projectListDock = new QDockWidget(i18n("Project Tree"), this); + projectListDock->setObjectName("project_tree"); m_projectList = new ProjectList(NULL, this); projectListDock->setWidget(m_projectList); addDockWidget(Qt::TopDockWidgetArea, projectListDock); effectListDock = new QDockWidget(i18n("Effect List"), this); + effectListDock->setObjectName("project_tree"); effectList = new KListWidget(this); effectListDock->setWidget(effectList); addDockWidget(Qt::TopDockWidgetArea, effectListDock); effectStackDock = new QDockWidget(i18n("Effect Stack"), this); + effectStackDock->setObjectName("project_tree"); effectStack = new KListWidget(this); effectStackDock->setWidget(effectStack); addDockWidget(Qt::TopDockWidgetArea, effectStackDock); transitionConfigDock = new QDockWidget(i18n("Transition"), this); + transitionConfigDock->setObjectName("project_tree"); transitionConfig = new KListWidget(this); transitionConfigDock->setWidget(transitionConfig); addDockWidget(Qt::TopDockWidgetArea, transitionConfigDock); @@ -51,11 +55,13 @@ MainWindow::MainWindow(QWidget *parent) Mlt::Factory::init(NULL); clipMonitorDock = new QDockWidget(i18n("Clip Monitor"), this); + clipMonitorDock->setObjectName("project_tree"); m_clipMonitor = new Monitor("clip", this); clipMonitorDock->setWidget(m_clipMonitor); addDockWidget(Qt::TopDockWidgetArea, clipMonitorDock); projectMonitorDock = new QDockWidget(i18n("Project Monitor"), this); + projectMonitorDock->setObjectName("project_tree"); m_projectMonitor = new Monitor("project", this); projectMonitorDock->setWidget(m_projectMonitor); addDockWidget(Qt::TopDockWidgetArea, projectMonitorDock); diff --git a/src/projectlist.cpp b/src/projectlist.cpp index a68ec1c2..6635bb4c 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -3,14 +3,18 @@ #include #include #include +#include +#include #include +#include #include #include #include #include "projectlist.h" #include "projectitem.h" +#include "ui_colorclip_ui.h" #include @@ -53,20 +57,57 @@ ProjectList::ProjectList(Render *projectRender, QWidget *parent) : QWidget(parent), m_render(projectRender) { - ui.setupUi(this); - ui.project_search->setTreeWidget(ui.project_list); - QStringList itemEntry; - itemEntry.append(QString::null); - itemEntry.append("coucou"); - new ProjectItem(ui.project_list, itemEntry); - connect(ui.button_add, SIGNAL(clicked ( bool )), this, SLOT(slotAddClip())); - connect(ui.project_list, SIGNAL(itemSelectionChanged()), this, SLOT(slotClipSelected())); - connect(ui.project_list, SIGNAL(itemDoubleClicked ( QTreeWidgetItem *, int )), this, SLOT(slotEditClip(QTreeWidgetItem *, int))); + QWidget *vbox = new QWidget; + listView = new QTreeWidget(this);; + QVBoxLayout *layout = new QVBoxLayout; + + // setup toolbar + searchView = new KTreeWidgetSearchLine (this); + QToolBar *bar = new QToolBar("projectToolBar", this); + bar->addWidget (searchView); + + QToolButton *addButton = new QToolButton( bar ); + QMenu *addMenu = new QMenu(this); + addButton->setMenu( addMenu ); + addButton->setPopupMode(QToolButton::MenuButtonPopup); + bar->addWidget (addButton); + + QAction *addClip = addMenu->addAction (KIcon("document-new"), i18n("Add Clip")); + connect(addClip, SIGNAL(triggered()), this, SLOT(slotAddClip())); + + QAction *addColorClip = addMenu->addAction (KIcon("document-new"), i18n("Add Color Clip")); + connect(addColorClip, SIGNAL(triggered()), this, SLOT(slotAddColorClip())); + + QAction *deleteClip = bar->addAction (KIcon("edit-delete"), i18n("Delete Clip")); + connect(deleteClip, SIGNAL(triggered()), this, SLOT(slotRemoveClip())); + + QAction *editClip = bar->addAction (KIcon("document-properties"), i18n("Edit Clip")); + connect(editClip, SIGNAL(triggered()), this, SLOT(slotEditClip())); + addButton->setDefaultAction( addClip ); - ui.project_list->setItemDelegate(new ItemDelegate(ui.project_list)); - ui.project_list->setIconSize(QSize(60, 40)); - ui.project_list->setSortingEnabled (true); + layout->addWidget( bar ); + layout->addWidget( listView ); + setLayout( layout ); + + searchView->setTreeWidget(listView); + listView->setColumnCount(3); + QStringList headers; + headers<setHeaderLabels(headers); + + QStringList itemEntry; + itemEntry.append(QString::null); + itemEntry.append("coucou"); + new ProjectItem(listView, itemEntry); + + connect(listView, SIGNAL(itemSelectionChanged()), this, SLOT(slotClipSelected())); + //connect(listView, SIGNAL(itemDoubleClicked ( QTreeWidgetItem *, int )), this, SLOT(slotEditClip(QTreeWidgetItem *, int))); + + + listView->setItemDelegate(new ItemDelegate(listView)); + listView->setIconSize(QSize(60, 40)); + listView->setSortingEnabled (true); } @@ -85,15 +126,20 @@ void ProjectList::slotDoubleClicked(QListWidgetItem *item, const QPoint &pos) void ProjectList::slotClipSelected() { - ProjectItem *item = (ProjectItem*) ui.project_list->currentItem(); + ProjectItem *item = (ProjectItem*) listView->currentItem(); if (item) emit clipSelected(item->toXml()); } -void ProjectList::slotEditClip(QTreeWidgetItem *item, int column) +void ProjectList::slotEditClip() { - if (column != 2){ - return; - } + +} + +void ProjectList::slotRemoveClip() +{ + kDebug()<<"////////// SLOT REMOVE"; + if (!listView->currentItem()) return; + delete listView->currentItem(); } void ProjectList::slotAddClip() @@ -108,16 +154,52 @@ void ProjectList::slotAddClip() QStringList itemEntry; itemEntry.append(QString::null); itemEntry.append((*it).fileName()); - ProjectItem *item = new ProjectItem(ui.project_list, itemEntry, QDomElement()); + ProjectItem *item = new ProjectItem(listView, itemEntry, QDomElement()); item->setData(1, FullPathRole, (*it).path()); emit getFileProperties((*it), 0); } +} + +void ProjectList::slotAddColorClip() +{ + QDialog *dia = new QDialog; + Ui::ColorClip_UI *dia_ui = new Ui::ColorClip_UI(); + dia_ui->setupUi(dia); + dia_ui->clip_name->setText(i18n("Color Clip")); + if (dia->exec() == QDialog::Accepted) + { + QDomDocument doc; + QDomElement element = doc.createElement("producer"); + element.setAttribute("mlt_service", "colour"); + QString color = dia_ui->clip_color->color().name(); + color = color.replace(0, 1, "0x") + "ff"; + element.setAttribute("colour", color); + element.setAttribute("type", (int) DocClipBase::COLOR); + QStringList itemEntry; + itemEntry.append(QString::null); + itemEntry.append(dia_ui->clip_name->text()); + ProjectItem *item = new ProjectItem(listView, itemEntry, element); + QPixmap pix(60, 40); + pix.fill(dia_ui->clip_color->color()); + item->setIcon(0, QIcon(pix)); + + } + delete dia_ui; + delete dia; + /*for (it = list.begin(); it != list.end(); it++) { + QStringList itemEntry; + itemEntry.append(QString::null); + itemEntry.append((*it).fileName()); + ProjectItem *item = new ProjectItem(listView, itemEntry, QDomElement()); + item->setData(1, FullPathRole, (*it).path()); + emit getFileProperties((*it), 0); + }*/ } void ProjectList::populate(QDomNodeList prods) { - ui.project_list->clear(); + listView->clear(); for (int i = 0; i < prods.count () ; i++) { addProducer(prods.item(i).toElement()); @@ -128,12 +210,12 @@ void ProjectList::slotReplyGetFileProperties(const QMap < QString, QString > &pr { QTreeWidgetItem *parent = 0; int count = - parent ? parent->childCount() : ui.project_list->topLevelItemCount(); + parent ? parent->childCount() : listView->topLevelItemCount(); for (int i = 0; i < count; i++) { QTreeWidgetItem *item = - parent ? parent->child(i) : ui.project_list->topLevelItem(i); + parent ? parent->child(i) : listView->topLevelItem(i); if (item->data(1, FullPathRole).toString() == properties["filename"]) { ((ProjectItem *) item)->setProperties(properties, metadata); @@ -147,12 +229,12 @@ void ProjectList::slotReplyGetImage(const KUrl &url, int pos, const QPixmap &pix { QTreeWidgetItem *parent = 0; int count = - parent ? parent->childCount() : ui.project_list->topLevelItemCount(); + parent ? parent->childCount() : listView->topLevelItemCount(); for (int i = 0; i < count; i++) { QTreeWidgetItem *item = - parent ? parent->child(i) : ui.project_list->topLevelItem(i); + parent ? parent->child(i) : listView->topLevelItem(i); if (item->data(1, FullPathRole).toString() == url.path()) { item->setIcon(0,pix); @@ -174,7 +256,7 @@ void ProjectList::addProducer(QDomElement producer) QStringList itemEntry; itemEntry.append(QString::null); itemEntry.append(resource.fileName()); - ProjectItem *item = new ProjectItem(ui.project_list, itemEntry, producer); + ProjectItem *item = new ProjectItem(listView, itemEntry, producer); //item->setIcon(0, Render::getVideoThumbnail(resource, 0, 60, 40)); item->setData(1, FullPathRole, resource.path()); item->setData(1, ClipTypeRole, (int) type); @@ -188,8 +270,8 @@ void ProjectList::addProducer(QDomElement producer) pix.fill(QColor(colour.left(7))); QStringList itemEntry; itemEntry.append(QString::null); - itemEntry.append(i18n("Color Clip")); - ProjectItem *item = new ProjectItem(ui.project_list, itemEntry, producer); + itemEntry.append(producer.attribute("name");); + ProjectItem *item = new ProjectItem(listView, itemEntry, producer); item->setIcon(0, QIcon(pix)); item->setData(1, ClipTypeRole, (int) type); } diff --git a/src/projectlist.h b/src/projectlist.h index 34ac7f9f..584add30 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -3,8 +3,8 @@ #include #include +#include -#include "ui_projectlist_ui.h" #include "docclipbase.h" #include "renderer.h" @@ -23,14 +23,17 @@ class ProjectList : public QWidget void slotReplyGetFileProperties(const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata); private: - Ui::ProjectList_UI ui; + QTreeWidget *listView; + KTreeWidgetSearchLine *searchView; Render *m_render; private slots: void slotDoubleClicked(QListWidgetItem *, const QPoint &); void slotAddClip(); - void slotEditClip(QTreeWidgetItem *item, int column); + void slotRemoveClip(); + void slotEditClip(); void slotClipSelected(); + void slotAddColorClip(); signals: void clipSelected(const QDomElement &); diff --git a/src/widgets/colorclip_ui.ui b/src/widgets/colorclip_ui.ui new file mode 100644 index 00000000..272f5588 --- /dev/null +++ b/src/widgets/colorclip_ui.ui @@ -0,0 +1,135 @@ + + ColorClip_UI + + + + 0 + 0 + 286 + 176 + + + + Dialog + + + + + + Name + + + + + + + + + + Clip Color + + + + + + + + 0 + 0 + 0 + + + + + + + + Duration + + + + + + + 99:99:99:99; + + + + + + + Qt::Vertical + + + + 20 + 31 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + + KColorButton + QPushButton +
kcolorbutton.h
+
+ + KLineEdit + QLineEdit +
klineedit.h
+
+ + KRestrictedLine + KLineEdit +
krestrictedline.h
+
+
+ + + + buttonBox + accepted() + ColorClip_UI + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ColorClip_UI + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/src/widgets/projectlist_ui.ui b/src/widgets/projectlist_ui.ui deleted file mode 100644 index 17edccb0..00000000 --- a/src/widgets/projectlist_ui.ui +++ /dev/null @@ -1,69 +0,0 @@ - - ProjectList_UI - - - - 0 - 0 - 347 - 205 - - - - Form - - - - - - - - - - - - - - - - - - true - - - true - - - - Thumb - - - - - Filename - - - - - Description - - - - - - - - - KPushButton - QPushButton -
kpushbutton.h
-
- - KTreeWidgetSearchLine - KLineEdit -
ktreewidgetsearchline.h
-
-
- - -