/* AStarViewModel.h - ViewModel for the common UI code between store and phone
* Copyright (C) 2014 Paulo Pinto
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/

#ifndef ASTARVIEWMODEL_H
#define ASTARVIEWMODEL_H

#pragma once

#include "MapWidget.h"
#include "ImageSourceImpl.h"

#include "pch.h"

namespace ViewModel
{
	[Windows::UI::Xaml::Data::Bindable]
	public ref class AStarViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged
	{
	public:
		AStarViewModel();
		virtual ~AStarViewModel();

		void LoadFile(Windows::Storage::StorageFile^ file);

		void ClearMap_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
		void Search_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
		void Page_SizeChanged(Platform::Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e);
		void dispatcherTimer_Tick(Platform::Object^ sender, Platform::Object^ e);
		void OnActivated(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowActivatedEventArgs^ e);
		void MapImage_DoubleTapped(Platform::Object^ sender, Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs^ e);

		property bool GoButtonEnabled;
		property Windows::UI::Xaml::Media::Imaging::SurfaceImageSource^ MapImage;

		virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ PropertyChanged;

	private protected:
		Windows::UI::Xaml::DispatcherTimer^ dispatcherTimer;
		MapWidget widget;
		ImageSourceImplementation::ImageSourceImpl^ dxRender;

		void NotifyPropertyChanged(Platform::String^ prop);
	};
}

#endif /* ASTARVIEWMODEL_H */
