⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datastoreui.cpp

📁 GPS Manager is a GUI for downloading, organizing, maintaining, and uploading GPS data (i.e. tracks,
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	for (Waypointlist::Waypoints::const_iterator itr = wpl.getList().begin();	     itr != wpl.getList().end();	     ++itr)	{	    Waypoint wp(*itr);	    DataStore::WaypointType wpt(wp);	    ds.waypoints().add(wpt);	}	// copy the tracks into our format	for (Tracklist::Tracks::const_iterator track_itr = tl.getList().begin();	     track_itr != tl.getList().end();	     ++track_itr)	{	    gpsmgr::Track track(track_itr->getName(), "");	    	    for (::Track::Trackpoints::const_iterator pt_itr = track_itr->getList().begin();		 pt_itr != track_itr->getList().end();		 ++pt_itr)	    {		track.points().push_back(TrackPoint(LatLon(pt_itr->getLatitude(),							   pt_itr->getLongitude()),						    pt_itr->getAltitude(),						    pt_itr->getUnixTime(),						    pt_itr->getNewSegment()));	    }	    ds.tracks().add(track);	}	setDataStore(ds);	flagChanges();    }    void DataStoreUI::gpsUpload()    {	assert(haveDataStore());		bool ok;	QString device = QInputDialog::getText(            "GPS Device", "Enter the device for the GPS:", QLineEdit::Normal,            QString::null, &ok, this );		if ( !ok || device.isEmpty() )	    return;	gGPS.setDevice(device);	// upload waypoints	Waypointlist wpl;	for (DataStore::Waypoints::const_iterator itr = dataStore().waypoints().begin();	     itr != dataStore().waypoints().end();	     ++itr)	{	    wpl.add(Wpt_Type(itr->second.name(),			     itr->second.position().lon().value(),			     itr->second.position().lat().value(),			     itr->second.altitude(),			     itr->second.comment(),			     itr->second.symbol(),			     itr->second.displayOption()));	}		gGPS.uploadWaypoints(wpl);	// upload tracks	Tracklist tl;	for (DataStore::Tracks::const_iterator trkitr = dataStore().tracks().begin();	     trkitr != dataStore().tracks().end();	     ++trkitr)	{	    gpspoint2::Track trk(trkitr->second.name());	    	    for (Track::PointList::const_iterator ptitr = trkitr->second.points().begin();		 ptitr != trkitr->second.points().end();		 ++ptitr)	    {		Trk_Point_Type trkpt(ptitr->position().lon().value(),				     ptitr->position().lat().value(),				     ptitr->altitude(),				     ptitr->newSegment(),				     ptitr->time());				trk.add(trkpt);	    }	    tl.add(trk);	}	gGPS.uploadTracks(tl);		// TODO: Routes    }        void DataStoreUI::waypointEditorPopup(QListViewItem* item)    {	ListItemPopup lip(this);		lip.setItemEnabled(ListItemPopup::EDIT, item);	lip.setItemEnabled(ListItemPopup::DELETE, item);		switch(lip.exec(QCursor::pos()))	{	    // Add	    case 0:		addWaypoint();		break;	    // Edit	    case 1:		editWaypoint();		break;	    // Delete	    case 2:		deleteWaypoint();		break;	}	    }        void DataStoreUI::addWaypoint()    {	using namespace gpsmgr::exceptions;	WaypointEditorUI wpui(this, "WaypointEditorUI");	wpui.mGroupEditorWidget->addAvailableGroups(mGroups.begin(),						    mGroups.end());	if (!wpui.exec()) return;	DataStore::WaypointType wp = wpui.waypoint();	DataStore::Waypoints::ID id = dataStore().waypoints().add(wp);	for (GroupObject::Groups::const_iterator gitr =		 wp.groupsBegin();	     gitr != wp.groupsEnd();	     ++gitr)	{	    mGroups.insert(*gitr);	}		if (matchFilterString(wp, mFilterEdit->text()))	{	    new WaypointListItem(dataStore().waypoints(),				 id,				 mWaypointListView);	}	flagChanges();    }    void DataStoreUI::deleteWaypoint()    {	WaypointListItem* curr =	    dynamic_cast<WaypointListItem*>(mWaypointListView->currentItem());		if (curr == NULL) return;	DataStore::Waypoints::ID id = curr->waypointID();	dataStore().waypoints().remove(id);	delete curr;		flagChanges();    }    void DataStoreUI::editWaypoint()    {	WaypointListItem* curr =	    dynamic_cast<WaypointListItem*>(mWaypointListView->currentItem());		if (curr == NULL) return;	WaypointEditorUI wpui(this, "WaypointEditorUI");	wpui.mGroupEditorWidget->addAvailableGroups(mGroups.begin(),						    mGroups.end());		DataStore::Waypoints::ID id = curr->waypointID();	wpui.setWaypoint(dataStore().waypoints().get(id));	if (!wpui.exec()) return;	DataStore::WaypointType wp = wpui.waypoint();	dataStore().waypoints().get(id) = wp;	for (GroupObject::Groups::const_iterator gitr =		 wp.groupsBegin();	     gitr != wp.groupsEnd();	     ++gitr)	{	    mGroups.insert(*gitr);	}		// Remove the track from the list if it no longer matches	if (!matchFilterString(dataStore().waypoints().get(id),			       mFilterEdit->text()))	{	    delete curr;	}	flagChanges();    }    void DataStoreUI::trackEditorPopup(QListViewItem* item)    {	ListItemPopup lip(this);		lip.setItemEnabled(ListItemPopup::EDIT, item);	lip.setItemEnabled(ListItemPopup::DELETE, item);	switch(lip.exec(QCursor::pos()))	{	    // Add	    case 0:		addTrack();		break;	    // Edit	    case 1:		editTrack();		break;	    // Delete	    case 2:		deleteTrack();		break;	}    }        void DataStoreUI::addTrack()    {	using namespace gpsmgr::exceptions;	TrackEditorUI tui(this, "TrackEditorUI");	tui.mGroupEditorWidget->addAvailableGroups(mGroups.begin(),						   mGroups.end());	if (!tui.exec()) return;	DataStore::TrackType trk = tui.track();	DataStore::Tracks::ID id = dataStore().tracks().add(trk);	for (GroupObject::Groups::const_iterator gitr =		 trk.groupsBegin();	     gitr != trk.groupsEnd();	     ++gitr)	{	    mGroups.insert(*gitr);	}		if (matchFilterString(trk, mFilterEdit->text()))	{	    new TrackListItem(dataStore().tracks(),			      id,			      mTrackListView);	}	flagChanges();    }        void DataStoreUI::deleteTrack()    {	TrackListItem* curr =	    static_cast<TrackListItem*>(mTrackListView->currentItem());		if (curr == NULL) return;	DataStore::Tracks::ID id = curr->trackID();	dataStore().tracks().remove(id);	delete curr;	flagChanges();    }        void DataStoreUI::editTrack()    {	TrackListItem* curr =	    static_cast<TrackListItem*>(mTrackListView->currentItem());		if (curr == NULL) return;	TrackEditorUI tui(this, "TrackEditorUI");	tui.mGroupEditorWidget->addAvailableGroups(mGroups.begin(),						   mGroups.end());		DataStore::Tracks::ID id = curr->trackID();	cerr << dataStore().tracks().get(id).points().size() << endl;	tui.setTrack(dataStore().tracks().get(id));	if (!tui.exec()) return;	DataStore::TrackType trk = tui.track();	dataStore().tracks().get(id) = trk;	for (GroupObject::Groups::const_iterator gitr =		 trk.groupsBegin();	     gitr != trk.groupsEnd();	     ++gitr)	{	    mGroups.insert(*gitr);	}		// Remove the track from the list if it no longer matches	if (!matchFilterString(dataStore().tracks().get(id),			       mFilterEdit->text()))	{	    delete curr;	}	flagChanges();    }    void DataStoreUI::filterChanged()    { filterElements(); }        void DataStoreUI::filterElements()    {	assert(haveDataStore());	string filterString = mFilterEdit->text();	// filter waypoints	mWaypointListView->clear();	for (DataStore::Waypoints::const_iterator itr = dataStore().waypoints().begin();	     itr != dataStore().waypoints().end();	     ++itr)	{	    if (matchFilterString(itr->second, filterString))	    {		new WaypointListItem(dataStore().waypoints(),				     itr->first,				     mWaypointListView);	    }	}	// filter tracks	mTrackListView->clear();	for (DataStore::Tracks::const_iterator itr = dataStore().tracks().begin();	     itr != dataStore().tracks().end();	     ++itr)	{	    if (matchFilterString(itr->second, filterString))	    {		new TrackListItem(dataStore().tracks(),				  itr->first,				  mTrackListView);	    }	}	// TODO: routes    }    void DataStoreUI::synchronizeInterface()    {	fileSaveAction->setEnabled(mNeedSave && mSaveFile.size() > 0);    }    void DataStoreUI::flagChanges(bool ch)    {	mNeedSave = ch;	synchronizeInterface();    }    } }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -