summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordeva <deva>2009-12-01 09:08:45 +0000
committerdeva <deva>2009-12-01 09:08:45 +0000
commit40294e22bd61cf7cf851ec6d6c7a41fd78cbdcad (patch)
tree19825db91a456419cee653d8e72b2fc4289348ec
parent373de0f137e4b7f7e8b348cabd6151573bd80a74 (diff)
Added context menu to filelist. Remove file from list is now possible.
-rw-r--r--dgedit/audioextractor.cc4
-rw-r--r--dgedit/audioextractor.h5
-rw-r--r--dgedit/filelist.cc66
-rw-r--r--dgedit/filelist.h18
-rw-r--r--dgedit/mainwindow.cc1
5 files changed, 87 insertions, 7 deletions
diff --git a/dgedit/audioextractor.cc b/dgedit/audioextractor.cc
index 8a08135..92ed4d6 100644
--- a/dgedit/audioextractor.cc
+++ b/dgedit/audioextractor.cc
@@ -129,11 +129,11 @@ void AudioExtractor::addFile(QString file, QString name)
audiofiles.push_back(pair);
}
-void AudioExtractor::removeFile(QString file)
+void AudioExtractor::removeFile(QString file, QString name)
{
QVector< QPair<QString, QString> >::iterator j = audiofiles.begin();
while(j != audiofiles.end()) {
- if(file == j->first) {
+ if(file == j->first && name == j->second) {
audiofiles.erase(j);
return;
}
diff --git a/dgedit/audioextractor.h b/dgedit/audioextractor.h
index 5254aa4..75d3553 100644
--- a/dgedit/audioextractor.h
+++ b/dgedit/audioextractor.h
@@ -39,10 +39,9 @@ Q_OBJECT
public:
AudioExtractor(QObject *parent);
- void addFile(QString file, QString name);
- void removeFile(QString file);
-
public slots:
+ void addFile(QString file, QString name);
+ void removeFile(QString file, QString name);
void exportSelections(Selections selections);
void setExportPath(const QString &path);
void setOutputPrefix(const QString &prefix);
diff --git a/dgedit/filelist.cc b/dgedit/filelist.cc
index 5326eef..c9798ef 100644
--- a/dgedit/filelist.cc
+++ b/dgedit/filelist.cc
@@ -28,11 +28,19 @@
#include <QFileDialog>
#include <QFileInfo>
+#include <QMenu>
FileList::FileList()
{
+ setContextMenuPolicy(Qt::CustomContextMenu);
+
+ connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),
+ this, SLOT(popupMenu(const QPoint &)));
+
connect(this, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
this, SLOT(selectionChanged(QListWidgetItem *)));
+
+ createMenus();
}
void FileList::addFiles()
@@ -57,13 +65,67 @@ void FileList::addFiles()
}
}
-void FileList::selectionChanged(QListWidgetItem *i)
+void FileList::setMasterFile(QListWidgetItem *i)
{
QString filename = i->text();
- for(int idx = 0; idx < count(); idx++)
+ for(int idx = 0; idx < count(); idx++) {
item(idx)->setIcon(QPixmap("icons/file.png"));
+ }
i->setIcon(QPixmap("icons/master.png"));
emit masterFileChanged(filename);
}
+
+void FileList::selectionChanged(QListWidgetItem *i)
+{
+ setMasterFile(i);
+}
+
+
+void FileList::createMenus()
+{
+ menu = new QMenu();
+
+ setMasterAction = new QAction("Set as Master (dbl-click)", this);
+ connect(setMasterAction, SIGNAL(triggered()), this, SLOT(setMaster()));
+
+ editAction = new QAction("Edit name", this);
+ connect(editAction, SIGNAL(triggered()), this, SLOT(editName()));
+
+ removeAction = new QAction("Remove", this);
+ connect(removeAction, SIGNAL(triggered()), this, SLOT(removeFile()));
+
+ menu->addAction(setMasterAction);
+ menu->addAction(editAction);
+ menu->addAction(removeAction);
+}
+
+void FileList::popupMenu(const QPoint & pos)
+{
+ activeItem = itemAt(pos);
+ if(!activeItem) return;
+ menu->popup(mapToGlobal(pos));
+}
+
+void FileList::setMaster()
+{
+ setMasterFile(activeItem);
+}
+
+void FileList::removeFile()
+{
+ QString file = activeItem->text();
+ QString name = activeItem->data(Qt::UserRole).toString();
+
+ printf("Removing: %s\n", file.toStdString().c_str());
+ delete activeItem;//takeItem(row(activeItem));
+ activeItem = NULL;
+ setCurrentRow(-1);
+
+ emit fileRemoved(file, name);
+}
+
+void FileList::editName()
+{
+}
diff --git a/dgedit/filelist.h b/dgedit/filelist.h
index e148203..c43fde6 100644
--- a/dgedit/filelist.h
+++ b/dgedit/filelist.h
@@ -28,6 +28,9 @@
#define __DRUMGIZMO_FILELIST_H__
#include <QListWidget>
+#include <QListWidgetItem>
+#include <QAction>
+#include <QMenu>
class FileList : public QListWidget {
Q_OBJECT
@@ -41,9 +44,24 @@ signals:
public slots:
void addFiles();
+ void popupMenu(const QPoint &pos);
private slots:
void selectionChanged(QListWidgetItem *item);
+ void setMaster();
+ void removeFile();
+ void editName();
+
+private:
+ void setMasterFile(QListWidgetItem *i);
+ void createMenus();
+
+ QMenu *menu;
+ QAction *setMasterAction;
+ QAction *editAction;
+ QAction *removeAction;
+
+ QListWidgetItem *activeItem;
};
diff --git a/dgedit/mainwindow.cc b/dgedit/mainwindow.cc
index e125dec..9b78968 100644
--- a/dgedit/mainwindow.cc
+++ b/dgedit/mainwindow.cc
@@ -136,6 +136,7 @@ MainWindow::MainWindow()
connect(filelist, SIGNAL(masterFileChanged(QString)), this, SLOT(loadFile(QString)));
connect(loadbtn, SIGNAL(clicked()), filelist, SLOT(addFiles()));
connect(filelist, SIGNAL(fileAdded(QString, QString)), extractor, SLOT(addFile(QString, QString)));
+ connect(filelist, SIGNAL(fileRemoved(QString, QString)), extractor, SLOT(removeFile(QString, QString)));
configs->addWidget(filelist);
QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this);