From 692b99d22726ea993dd102dfde560dddb92ba5c2 Mon Sep 17 00:00:00 2001 From: kostas Date: Sun, 15 Apr 2012 09:08:58 +0000 Subject: [PATCH] Added support for dragging files from the file list Upped version to 0.9.6 FossilOrigin-Name: a5a77363fdcadd2bea991228289a87fa73a98fb9 --- FileTableView.cpp | 33 +++++++++++++++++++++++++++++++++ FileTableView.h | 24 ++++++++++++++++++++++++ MainWindow.cpp | 29 +++++++++++++++++++++++++++++ MainWindow.h | 1 + MainWindow.ui | 9 ++++++++- fuel.pro | 6 ++++-- main.cpp | 6 +++--- manifest | 22 ++++++++++++---------- manifest.uuid | 2 +- 9 files changed, 115 insertions(+), 17 deletions(-) create mode 100644 FileTableView.cpp create mode 100644 FileTableView.h diff --git a/FileTableView.cpp b/FileTableView.cpp new file mode 100644 index 0000000..24e1dff --- /dev/null +++ b/FileTableView.cpp @@ -0,0 +1,33 @@ +#include "FileTableView.h" +#include +//#include +#include +//#include + +FileTableView::FileTableView(QWidget *parent) : + QTableView(parent) +{ +} + +//------------------------------------------------------------------------------ +void FileTableView::mousePressEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) + dragStartPos = event->pos(); + + QTableView::mousePressEvent(event); +} + +//------------------------------------------------------------------------------ +void FileTableView::mouseMoveEvent(QMouseEvent *event) +{ + int distance = (event->pos() - dragStartPos).manhattanLength(); + if (event->buttons() & Qt::LeftButton && distance >= QApplication::startDragDistance()) + { + dragOutEvent(); + QTableView::mouseReleaseEvent(event); + } + else + QTableView::mouseMoveEvent(event); + +} diff --git a/FileTableView.h b/FileTableView.h new file mode 100644 index 0000000..5fc42fa --- /dev/null +++ b/FileTableView.h @@ -0,0 +1,24 @@ +#ifndef FILETABLEVIEW_H +#define FILETABLEVIEW_H + +#include +#include + +class FileTableView : public QTableView +{ + Q_OBJECT +public: + explicit FileTableView(QWidget *parent = 0); + +signals: + void dragOutEvent(); + +private: + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + +private: + QPoint dragStartPos; +}; + +#endif // FILETABLEVIEW_H diff --git a/MainWindow.cpp b/MainWindow.cpp index 4bb6d9c..89037a9 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include "CommitDialog.h" #include "FileActionDialog.h" #include @@ -107,6 +109,11 @@ MainWindow::MainWindow(QWidget *parent) : ui->tableView->addAction(ui->actionRevert); ui->tableView->addAction(ui->actionRename); ui->tableView->addAction(ui->actionDelete); + connect( ui->tableView, + SIGNAL( dragOutEvent() ), + SLOT( on_fileView_dragOut() ), + Qt::DirectConnection ); + // TreeView ui->treeView->setModel(&repoDirModel); @@ -2280,3 +2287,25 @@ void MainWindow::on_actionDiffStash_triggered() // Run diff runFossil(QStringList() << "stash" << "diff" << *id_it, 0); } + +//------------------------------------------------------------------------------ +void MainWindow::on_fileView_dragOut() +{ + QStringList filenames; + getFileViewSelection(filenames); + QString uris; + + // text/uri-list is a new-line separate list of uris + foreach(QString f, filenames) + { + uris += QUrl::fromLocalFile(getCurrentWorkspace()+QDir::separator()+f).toString() + '\n'; + } + + QMimeData *mime_data = new QMimeData; + mime_data->setData("text/uri-list", uris.toUtf8()); + + QDrag drag(this); + drag.setMimeData(mime_data); + drag.exec(Qt::CopyAction); +} + diff --git a/MainWindow.h b/MainWindow.h index 56f7f97..8e32219 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -184,6 +184,7 @@ private slots: // Manual slots void on_openRecent(); void on_treeView_selectionChanged(const class QItemSelection &selected, const class QItemSelection &deselected); + void on_fileView_dragOut(); // Designer slots void on_actionRefresh_triggered(); diff --git a/MainWindow.ui b/MainWindow.ui index dfdebac..592a87f 100644 --- a/MainWindow.ui +++ b/MainWindow.ui @@ -69,7 +69,7 @@ false - + 80 @@ -822,6 +822,13 @@ + + + FileTableView + QTableView +
FileTableView.h
+
+
diff --git a/fuel.pro b/fuel.pro index 850f0b0..222fdfb 100644 --- a/fuel.pro +++ b/fuel.pro @@ -20,13 +20,15 @@ SOURCES += main.cpp\ CommitDialog.cpp \ FileActionDialog.cpp \ SettingsDialog.cpp \ - Utils.cpp + Utils.cpp \ + FileTableView.cpp HEADERS += MainWindow.h \ CommitDialog.h \ FileActionDialog.h \ SettingsDialog.h \ - Utils.h + Utils.h \ + FileTableView.h FORMS += MainWindow.ui \ CommitDialog.ui \ diff --git a/main.cpp b/main.cpp index febf8c5..9a6012b 100644 --- a/main.cpp +++ b/main.cpp @@ -5,9 +5,9 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); a.setApplicationName("Fuel"); - a.setApplicationVersion("0.9.5"); - a.setOrganizationDomain("karanik.com"); - a.setOrganizationName("Karanik"); + a.setApplicationVersion("0.9.6"); + a.setOrganizationDomain("fuel-scm.org"); + a.setOrganizationName("fuel-scm"); // Native OSX applications don't use menu icons #ifdef Q_WS_MACX diff --git a/manifest b/manifest index a7202b3..151cf7a 100644 --- a/manifest +++ b/manifest @@ -1,20 +1,22 @@ -C Added\ssupport\sfor\sstashes\nGeneralized\sthe\scommit\sdialog\sto\ssupport\sstashes\nParameters\sare\snow\squoted\sin\sthe\slog\sif\snecessary\nFixed\sanother\sissue\swith\sthe\sfolderview\sshow/hide\slogic\nVarious\sminor\sui\stweaks -D 2012-04-15T06:56:51.575 +C Added\ssupport\sfor\sdragging\sfiles\sfrom\sthe\sfile\slist\nUpped\sversion\sto\s0.9.6\n +D 2012-04-15T09:08:58.949 F CommitDialog.cpp a46020a9361151d8d286a2670257d01d8967bf69 F CommitDialog.h f1ee8db92103164e7db55a8407ccdcff24571b72 F CommitDialog.ui 813d7cba316e226de1a22b7e480bb969fbe9b0c4 F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8 F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 -F MainWindow.cpp 36e0fa67dbae7db5612d00e28267a2f8240353d0 -F MainWindow.h 552f6bd4061ae15be90e52402bcde6a8d7fbb7ad -F MainWindow.ui b96e3126e2966f8fdeda1dd063efbbc731c7338e +F FileTableView.cpp 04b793f93b47717cc482dd684ee2b4976e1340fc +F FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df +F MainWindow.cpp 6b8caf49d9c0f4e9768fd5c860a92cae638bb353 +F MainWindow.h 987fa4ae0604373778184501f4f71f07ac614a16 +F MainWindow.ui 726175dba24957cdf9884326c3948dffe01a4a3d F SettingsDialog.cpp e1fad18cc020d08b82c6d35dc94f6624deec9a3b F SettingsDialog.h f5da6cab4ccc82e2eb78ec835fb849c4c104d6cc F SettingsDialog.ui 8964629ea80c61971c0601624c84d1927902b1fd F Utils.cpp 2587d8073d6c2c1da49622c387cc457a0081f7b5 F Utils.h a71d82474747466f4c225128d26a703b510230d4 -F fuel.pro 3dc8e31fde8137143dea0ae44a81eb6733d86168 +F fuel.pro 880b013acb1136d97c7414372c4e58053cfb153d F fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79 F icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8 F icons/Adobe\sIllustrator\sCS3\sDocument-01.png 2e44e933d58eefee7ccfa1650fed4ceadcf3c2be @@ -172,9 +174,9 @@ F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 F installer/fuel.iss 13b6a938bcdf273cbd3649d2549887baa1577214 F installer/license.txt 4cc77b90af91e615a64ae04893fdffa7939db84c -F main.cpp 46bf5ddc90fca01c9ef2e8e3d14b4d32217945dd +F main.cpp 581c2b64cb8ed88aabcdd6b6482d28f3f3935232 F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P d0520ae5050524145697206927a579823b8920d0 -R b055358a254079018cada6a15162fbb7 +P ce70efe67a1fe0087cc6d3aa79757a5011c57db2 +R 3ef0842f9e81c70e0425f1d683d72d06 U kostas -Z c15f935758986542ce2828f4282ddc7a +Z 843fc316a0eadf4fed3bcf121554dcb2 diff --git a/manifest.uuid b/manifest.uuid index 6ecc512..e674de8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ce70efe67a1fe0087cc6d3aa79757a5011c57db2 \ No newline at end of file +a5a77363fdcadd2bea991228289a87fa73a98fb9 \ No newline at end of file