/******************************************************************************* PlayqueueModel::clear *******************************************************************************/ void PlayqueueModel::clear() { //Debug::debug() << " [PlayqueueModel] clear"; beginRemoveRows(QModelIndex(), 0, PlayqueueBase::size()-1); PlayqueueBase::clear(); endRemoveRows(); emit dataChanged(QModelIndex(), QModelIndex()); emit updated(); emit modelCleared(); }
GPXLab::GPXLab(const QString &fileName, QWidget *parent) : QMainWindow(parent), ui(new Ui::GPXLab), closing(false) { // setup UI ui->setupUi(this); // create GPX_model wrapper gpxmw = new GPX_wrapper(appName); connect(gpxmw, SIGNAL(fileLoaded()), this, SLOT(fileLoaded())); connect(gpxmw, SIGNAL(fileSaved()), this, SLOT(fileSaved())); connect(gpxmw, SIGNAL(modelCleared()), this, SLOT(modelCleared())); connect(gpxmw, SIGNAL(modelPropertiesChanged()), this, SLOT(modelPropertiesChanged())); connect(gpxmw, SIGNAL(modelMetadataChanged()), this, SLOT(modelMetadataChanged())); connect(gpxmw, SIGNAL(trackMetadataChanged(int)), this, SLOT(trackMetadataChanged(int))); connect(gpxmw, SIGNAL(trackInserted(int, const GPX_trkType&)), this, SLOT(trackInserted(int, const GPX_trkType&))); connect(gpxmw, SIGNAL(trackDeleted(int)), this, SLOT(trackDeleted(int))); connect(gpxmw, SIGNAL(trackMovedUp(int)), this, SLOT(trackMovedUp(int))); connect(gpxmw, SIGNAL(trackMovedDown(int)), this, SLOT(trackMovedDown(int))); connect(gpxmw, SIGNAL(trackSplited(int)), this, SLOT(trackSplited(int))); connect(gpxmw, SIGNAL(trackCombined(int)), this, SLOT(trackCombined(int))); connect(gpxmw, SIGNAL(trackTimeShifted(int, long)), this, SLOT(trackTimeShifted(int, long))); connect(gpxmw, SIGNAL(trackSelectionChanged(int, int, int, const GPX_wptType*)), this, SLOT(trackSelectionChanged(int, int, int, const GPX_wptType*))); connect(gpxmw, SIGNAL(pointEdited(int, int, int, GPX_wrapper::TrackPointProperty)), this, SLOT(pointEdited(int, int, int, GPX_wrapper::TrackPointProperty))); connect(gpxmw, SIGNAL(pointInserted(int, int, int, const GPX_wptType&)), this, SLOT(pointInserted(int, int, int, const GPX_wptType&))); connect(gpxmw, SIGNAL(pointDeleted(int, int, int)), this, SLOT(pointDeleted(int, int, int))); connect(gpxmw, SIGNAL(pointSelectionChanged(int, const GPX_wptType*)), this, SLOT(pointSelectionChanged(int, const GPX_wptType*))); // set window title setMainWindowTitle(); // load settings settings = new Settings(this); settings->load(); ui->actionFollow_Item->setChecked(settings->getValue("FollowItem").toBool()); ui->actionShow_Only_Selected_Track->setChecked(settings->getValue("ShowOnlySelectedItem").toBool()); // undo stack undoStack = new QUndoStack(this); undoStack->setUndoLimit(settings->undoLimit); QAction *undoAction = undoStack->createUndoAction(this, tr("&Undo")); undoAction->setShortcuts(QKeySequence::Undo); undoAction->setIcon(QIcon(":/images/undo.png")); QAction *redoAction = undoStack->createRedoAction(this, tr("&Redo")); redoAction->setShortcuts(QKeySequence::Redo); redoAction->setIcon(QIcon(":/images/redo.png")); connect(undoStack, SIGNAL(indexChanged(int)), this, SLOT(setMainWindowTitle())); // tree widget connect(ui->treeTracks, SIGNAL(itemDoubleClicked(QTreeWidgetItem* , int)), this, SLOT(tree_doubleClicked(QTreeWidgetItem*, int))); // map widget ui->mapWidget->init(gpxmw, undoStack, settings->doPersistentCaching, settings->cachePath); ui->mapWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->mapWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(map_showContextMenu(const QPoint&))); connect(ui->mapWidget, SIGNAL(viewChanged(const QPointF&, int)), this, SLOT(map_viewChanged(const QPointF&, int))); // calendar widget ui->calendarWidget->init(gpxmw); // table widget ui->tableWidgetPoints->init(gpxmw, undoStack); connect(settings, SIGNAL(settingsChanged(bool)), ui->tableWidgetPoints, SLOT(settingsChanged(bool))); // diagram widget ui->diagramWidget->addAction(ui->dockWidgetDiagrams->toggleViewAction()); ui->diagramWidget->init(gpxmw); // status bar widgets lblCoordinates = new QLabel(); statusBar()->addWidget(lblCoordinates); lblStatus = new QLabel(); statusBar()->addWidget(lblStatus); // zoom slider widget zoomSlider = new QSlider(Qt::Horizontal, this); zoomSlider->setMinimumWidth(10); zoomSlider->setMaximumWidth(100); zoomSlider->setMinimum(0); zoomSlider->setMaximum(0); ui->mainToolBar->insertWidget(ui->actionMapZoom, zoomSlider); connect(zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(zoom_valueChanged(int))); // build recent files action actionOpenRecentFile = new QAction*[settings->maxRecentFiles]; for (int i = 0; i < settings->maxRecentFiles; ++i) { actionOpenRecentFile[i] = new QAction(this); actionOpenRecentFile[i]->setVisible(false); connect(actionOpenRecentFile[i], SIGNAL(triggered()), this, SLOT(openRecentFile())); ui->menuFile->insertAction(ui->actionExit, actionOpenRecentFile[i]); } ui->menuFile->insertSeparator(ui->actionExit); updateRecentFiles(); // menu edit ui->menuEdit->addAction(undoAction); ui->menuEdit->addAction(redoAction); // menu view ui->menuView->addAction(ui->dockWidgetFile->toggleViewAction()); ui->menuView->addAction(ui->dockWidgetTracks->toggleViewAction()); ui->menuView->addAction(ui->dockWidgetDiagrams->toggleViewAction()); ui->menuView->addAction(ui->dockWidgetPoints->toggleViewAction()); ui->menuView->addAction(ui->mainToolBar->toggleViewAction()); ui->menuView->addSeparator(); ui->menuView->addAction(ui->actionRestore_Default_View); // install event filters for dock widgets to catch resize events ui->dockWidgetFile->installEventFilter(this); ui->dockWidgetTracks->installEventFilter(this); ui->dockWidgetDiagrams->installEventFilter(this); ui->dockWidgetPoints->installEventFilter(this); // dock file ui->dockWidgetFile->addAction(ui->dockWidgetFile->toggleViewAction()); ui->dockWidgetFile->addAction(ui->actionEdit_File_Properties); // dock tracks ui->dockWidgetTracks->addAction(ui->dockWidgetTracks->toggleViewAction()); ui->dockWidgetTracks->addAction(ui->actionEdit_Track_Properties); ui->dockWidgetTracks->addAction(ui->actionGetAltitudeFromSRTM); ui->dockWidgetTracks->addAction(ui->actionSetStartTime); // dock diagram ui->dockWidgetDiagrams->addActions(ui->diagramWidget->actions()); // dock points ui->dockWidgetPoints->addAction(ui->dockWidgetPoints->toggleViewAction()); ui->dockWidgetPoints->addAction(ui->actionInsert_Point); ui->dockWidgetPoints->addAction(ui->actionDelete_Point); // default context menu addActions(ui->menuView->actions()); // connect signals for track and point selection connect(ui->diagramWidget, SIGNAL(selectionChanged(time_t)), this, SLOT(diagram_selectionChanged(time_t))); connect(ui->mapWidget, SIGNAL(selectionChanged(int, int, double, double)), this, SLOT(map_selectionChanged(int, int, double, double))); connect(ui->mapWidget, SIGNAL(selectionChanged(int)), this, SLOT(map_selectionChanged(int))); connect(ui->tableWidgetPoints, SIGNAL(selectionChanged(int)), this, SLOT(table_selectionChanged(int))); connect(ui->treeTracks, SIGNAL(itemSelectionChanged()), this, SLOT(tree_selectionChanged())); connect(ui->calendarWidget, SIGNAL(selectionChanged(int)), this, SLOT(cal_selectionChanged(int))); // disable actions updateActions(false); // open file if any passed as argument if (!fileName.isEmpty()) { openFile(fileName); } }