mapsViewDialog.cpp 1.89 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
#include "mapsViewDialog.h"

#include "window.h"
#include "view.h"
#include "plugin.h"

#include <QMessageBox>
#include <QMouseEvent>

MapsViewDialog::MapsViewDialog(Window* window, View* view) :
	QDialog(view),
	m_window(window),
	m_view(view)
{
	this->setupUi(this);
	this->setWindowTitle(m_view->getName() + QString(" : maps"));

	connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(cb_selectedMapsChanged()));

	connect(m_window, SIGNAL(mapAdded(MapHandler*)), this, SLOT(cb_addMapToList(MapHandler*)));
	connect(m_window, SIGNAL(mapRemoved(MapHandler*)), this, SLOT(cb_removeMapFromList(MapHandler*)));

	QList<MapHandler*> maps = m_window->getMapsList();
	foreach(MapHandler* m, maps)
		mapList->addItem(m->getName());
}

MapsViewDialog::~MapsViewDialog()
{}

void MapsViewDialog::selectCurrentMaps()
{
	QList<MapHandler*> currentMaps = m_view->getLinkedMaps();
	QList<QString> currentMapsNames;
	foreach(MapHandler* m, currentMaps)
	currentMapsNames.push_back(m->getName());

	for(int i = 0; i < mapList->count(); ++i)
	{
		if(currentMapsNames.contains(mapList->item(i)->text()))
			mapList->item(i)->setSelected(true);
		else
			mapList->item(i)->setSelected(false);
	}
}

void MapsViewDialog::cb_selectedMapsChanged()
{
	for(int i = 0; i < mapList->count(); ++i)
	{
		QString mapName = mapList->item(i)->text();
		MapHandler* map = m_window->getMap(mapName);
		if(mapList->item(i)->isSelected() && !m_view->isLinkedToMap(map))
		{
			m_view->linkMap(map);
			map->linkView(m_view);
		}
		else if(!mapList->item(i)->isSelected() && m_view->isLinkedToMap(map))
		{
			m_view->unlinkMap(map);
			map->unlinkView(m_view);
		}
	}
}

void MapsViewDialog::cb_addMapToList(MapHandler* m)
{
	mapList->addItem(m->getName());
}

void MapsViewDialog::cb_removeMapFromList(MapHandler* m)
{
	for(int i = 0; i < mapList->count(); ++i)
	{
		if(mapList->item(i)->text() == m->getName())
		{
			delete mapList->item(i);
			return;
		}
	}
}