From 51c25f00729864057c56fcd533f6a33901a6bd84 Mon Sep 17 00:00:00 2001 From: Chris Whiteford Date: Tue, 25 May 2021 11:39:24 -0400 Subject: [PATCH] Support dragging and dropping of files onto app icon Tested on macos and windows. Drag and drop files onto either the dock icon or task bar icon once SavvyCCAN is running --- Info.plist.template | 45 +++++++++++++++++++++++++++++++++++++++++++ SavvyCAN.pro | 3 +++ icons/SavvyIcon.icns | Bin 0 -> 60666 bytes main.cpp | 33 +++++++++++++++++++++++++++---- mainwindow.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++ mainwindow.h | 2 ++ 6 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 Info.plist.template create mode 100644 icons/SavvyIcon.icns diff --git a/Info.plist.template b/Info.plist.template new file mode 100644 index 0000000..763e54e --- /dev/null +++ b/Info.plist.template @@ -0,0 +1,45 @@ + + + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + ${ASSETCATALOG_COMPILER_APPICON_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundlePackageType + APPL + CFBundleSignature + ${QMAKE_PKGINFO_TYPEINFO} + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSPrincipalClass + NSApplication + NSSupportsAutomaticGraphicsSwitching + + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + asc + avc + blf + can + crt + crtd + csv + evc + log + qcc + trace + trc + txt + + CFBundleTypeRole + Viewer + + + + diff --git a/SavvyCAN.pro b/SavvyCAN.pro index acb4110..4e6b2ea 100644 --- a/SavvyCAN.pro +++ b/SavvyCAN.pro @@ -16,6 +16,9 @@ DEFINES += QCUSTOMPLOT_USE_OPENGL TARGET = SavvyCAN TEMPLATE = app +QMAKE_INFO_PLIST = Info.plist.template +ICON = icons/SavvyIcon.icns + SOURCES += main.cpp\ connections/mqtt_bus.cpp \ mqtt/qmqtt_client.cpp \ diff --git a/icons/SavvyIcon.icns b/icons/SavvyIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..78cb5f9010b5ea850b6b306f4ec9a47818e42d97 GIT binary patch literal 60666 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

;0?lq|y0(Nq;7)s9f+PDzM4dOj( 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 I#=a;2*+zDl>i_@% literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index 847a380..c9466dc 100644 --- a/main.cpp +++ b/main.cpp @@ -1,9 +1,30 @@ #include "mainwindow.h" #include +class SavvyCANApplication : public QApplication +{ +public: + MainWindow *mainWindow; + + SavvyCANApplication(int &argc, char **argv) : QApplication(argc, argv) + { + } + + bool event(QEvent *event) override + { + if (event->type() == QEvent::FileOpen) + { + QFileOpenEvent *openEvent = static_cast(event); + mainWindow->handleDroppedFile(openEvent->file()); + } + + return QApplication::event(event); + } +}; + int main(int argc, char *argv[]) { - QApplication a(argc, argv); + SavvyCANApplication a(argc, argv); //Add a local path for Qt extensions, to allow for per-application extensions. a.addLibraryPath("plugins"); @@ -14,7 +35,7 @@ int main(int argc, char *argv[]) a.setOrganizationDomain("evtv.me"); QSettings::setDefaultFormat(QSettings::IniFormat); - MainWindow w; + a.mainWindow = new MainWindow(); QSettings settings; int fontSize = settings.value("Main/FontSize", 9).toUInt(); @@ -22,7 +43,11 @@ int main(int argc, char *argv[]) sysFont.setPointSize(fontSize); a.setFont(sysFont); - w.show(); + a.mainWindow->show(); - return a.exec(); + int retCode = a.exec(); + + delete a.mainWindow; a.mainWindow = NULL; + + return retCode; } diff --git a/mainwindow.cpp b/mainwindow.cpp index be72ea0..c9ae16d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -807,6 +807,50 @@ void MainWindow::handleLoadFile() } } +void MainWindow::handleDroppedFile(const QString &filename) +{ + QProgressDialog progress(qApp->activeWindow()); + progress.setWindowModality(Qt::WindowModal); + progress.setLabelText("Loading file..."); + progress.setCancelButton(nullptr); + progress.setRange(0,0); + progress.setMinimumDuration(0); + progress.show(); + + QVector loadedFrames; + bool loadResult = FrameFileIO::autoDetectLoadFile(filename, &loadedFrames); + + progress.cancel(); + + if (!loadResult) + { + if (loadedFrames.count() > 0) //only ask if at least one frame was decoded. + { + QMessageBox::StandardButton confirmDialog = QMessageBox::question(this, "Error Loading", "Do you want to salvage what could be loaded?", + QMessageBox::Yes|QMessageBox::No); + if (confirmDialog == QMessageBox::Yes) + { + loadResult = true; + } + } + } + + if (loadResult) + { + ui->canFramesView->scrollToTop(); + model->clearFrames(); + model->insertFrames(loadedFrames); + loadedFileName = filename; + model->recalcOverwrite(); + ui->lbNumFrames->setText(QString::number(model->rowCount())); + if (ui->cbAutoScroll->isChecked()) ui->canFramesView->scrollToBottom(); + + updateFileStatus(); + emit framesUpdated(-1); + } +} + + void MainWindow::handleSaveFile() { QString filename; diff --git a/mainwindow.h b/mainwindow.h index 0513ebb..f773ad5 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -54,6 +54,8 @@ public: CANFrameModel * getCANFrameModel(); ~MainWindow(); + void handleDroppedFile(const QString &filename); + private slots: void handleLoadFile(); void handleSaveFile();