/************************************************************************** * Copyright (C) 2016 by Savoir-faire Linux * * Author: Jäger Nicolas <nicolas.jager@savoirfairelinux.com> * * Author: Traczyk Andreas <traczyk.andreas@savoirfairelinux.com> * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * * This program 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * **************************************************************************/ #include "pch.h" #include "LoadingPage.xaml.h" #include "MainPage.xaml.h" #include "Wizard.xaml.h" using namespace RingClientUWP; using namespace RingClientUWP::Views; using namespace RingClientUWP::ViewModel; using namespace Platform; using namespace Windows::ApplicationModel::Core; using namespace Windows::Foundation; using namespace Windows::Foundation::Collections; using namespace Windows::UI::ViewManagement; using namespace Windows::UI::Xaml; using namespace Windows::UI::Xaml::Controls; using namespace Windows::UI::Xaml::Controls::Primitives; using namespace Windows::UI::Core; using namespace Windows::UI::Xaml::Data; using namespace Windows::UI::Xaml::Input; using namespace Windows::UI::Xaml::Interop; using namespace Windows::UI::Xaml::Navigation; using namespace Windows::ApplicationModel::Activation; using namespace Windows::Graphics::Display; using namespace Windows::System; LoadingPage::LoadingPage() { InitializeComponent(); Utils::fileExists(ApplicationData::Current->LocalFolder, ".config\\dring.yml") .then([this](bool config_exists) { if (config_exists) { Utils::fileExists(ApplicationData::Current->LocalFolder, "creation.token") .then([this](bool token_exists) { if (token_exists) { /* we have a token, the config has to be considered as corrupted, summon the wizard */ Utils::fileExists(ApplicationData::Current->LocalFolder, ".config\\dring.yml") .then([this](bool token_exists) { if (token_exists) { StorageFolder^ storageFolder = ApplicationData::Current->LocalFolder; task<StorageFile^>(storageFolder->GetFileAsync(".config\\dring.yml")).then([this](StorageFile^ folder) { folder->DeleteAsync(); }); } }); this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this]() { this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(Wizard::typeid)); })); } else { /* there is no token and we have a config.yml, summon the main page */ this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this]() { this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(MainPage::typeid)); })); } }); } else { /* no config file, create the token and summon the wizard*/ StorageFolder^ storageFolder = ApplicationData::Current->LocalFolder; storageFolder->CreateFileAsync("creation.token", CreationCollisionOption::ReplaceExisting); this->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this] () { this->Frame->Navigate(Windows::UI::Xaml::Interop::TypeName(Wizard::typeid)); })); } }); }