2015-06-19 14:24:15 +00:00
|
|
|
|
//
|
|
|
|
|
|
// ImportPage.xaml.cpp
|
|
|
|
|
|
// Implementation of the ImportPage class
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#include "pch.h"
|
|
|
|
|
|
#include "ImportPage.xaml.h"
|
2015-06-19 23:04:52 +00:00
|
|
|
|
#include "Database\ROMDBEntry.h"
|
|
|
|
|
|
#include "Database\ROMDatabase.h"
|
2015-08-08 03:59:19 +00:00
|
|
|
|
#include "SelectFilesPane.xaml.h"
|
2015-08-03 13:36:25 +00:00
|
|
|
|
#include "App.xaml.h"
|
2015-08-04 03:27:54 +00:00
|
|
|
|
#include "FileBrowserPane.xaml.h"
|
2015-08-22 21:51:33 +00:00
|
|
|
|
#include "AdControl.xaml.h"
|
2015-07-08 12:07:28 +00:00
|
|
|
|
|
2015-06-23 14:46:09 +00:00
|
|
|
|
#include "stringhelper.h"
|
2015-06-19 23:04:52 +00:00
|
|
|
|
|
2015-06-19 14:24:15 +00:00
|
|
|
|
|
2015-08-03 13:36:25 +00:00
|
|
|
|
|
2015-06-19 14:24:15 +00:00
|
|
|
|
using namespace VBA10;
|
|
|
|
|
|
|
|
|
|
|
|
using namespace Platform;
|
|
|
|
|
|
using namespace Windows::Foundation;
|
|
|
|
|
|
using namespace Windows::Foundation::Collections;
|
|
|
|
|
|
using namespace Windows::UI::Xaml;
|
|
|
|
|
|
using namespace Windows::UI::Xaml::Controls;
|
|
|
|
|
|
using namespace Windows::UI::Xaml::Controls::Primitives;
|
|
|
|
|
|
using namespace Windows::UI::Xaml::Data;
|
|
|
|
|
|
using namespace Windows::UI::Xaml::Input;
|
|
|
|
|
|
using namespace Windows::UI::Xaml::Media;
|
|
|
|
|
|
using namespace Windows::UI::Xaml::Navigation;
|
2015-06-19 23:04:52 +00:00
|
|
|
|
using namespace Windows::UI::Popups;
|
|
|
|
|
|
using namespace Windows::Storage::Pickers;
|
|
|
|
|
|
using namespace Windows::Storage;
|
|
|
|
|
|
using namespace Windows::Storage::AccessCache;
|
2015-06-24 16:45:34 +00:00
|
|
|
|
using namespace Windows::Storage::Search;
|
2015-07-08 12:07:28 +00:00
|
|
|
|
using namespace Windows::Storage::Streams;
|
2015-06-19 23:04:52 +00:00
|
|
|
|
using namespace Concurrency;
|
2015-06-19 14:24:15 +00:00
|
|
|
|
|
2015-09-25 21:45:30 +00:00
|
|
|
|
|
2015-06-19 14:24:15 +00:00
|
|
|
|
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
|
|
|
|
|
|
|
|
|
|
|
|
ImportPage::ImportPage()
|
|
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
2015-08-22 21:51:33 +00:00
|
|
|
|
|
|
|
|
|
|
//create ad control
|
|
|
|
|
|
if (App::HasAds)
|
|
|
|
|
|
{
|
|
|
|
|
|
AdControl^ adControl = ref new AdControl();
|
|
|
|
|
|
LayoutRoot->Children->Append(adControl);
|
|
|
|
|
|
adControl->SetValue(Grid::RowProperty, 2);
|
|
|
|
|
|
}
|
2015-06-19 14:24:15 +00:00
|
|
|
|
}
|
2015-06-19 23:04:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ImportPage::chooseFolderbtn_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
|
|
|
|
|
|
{
|
2015-10-06 04:54:26 +00:00
|
|
|
|
auto loader = Windows::ApplicationModel::Resources::ResourceLoader::GetForViewIndependentUse();
|
2015-09-25 21:45:30 +00:00
|
|
|
|
|
2015-06-19 23:04:52 +00:00
|
|
|
|
FolderPicker ^picker = ref new FolderPicker();
|
|
|
|
|
|
|
|
|
|
|
|
picker->FileTypeFilter->Append(".gba");
|
|
|
|
|
|
picker->FileTypeFilter->Append(".gbc");
|
|
|
|
|
|
picker->FileTypeFilter->Append(".gb");
|
2015-07-15 05:02:33 +00:00
|
|
|
|
//picker->FileTypeFilter->Append(".sav");
|
|
|
|
|
|
//picker->FileTypeFilter->Append(".sgm");
|
|
|
|
|
|
//picker->FileTypeFilter->Append(".zip");
|
|
|
|
|
|
//picker->FileTypeFilter->Append(".rar");
|
|
|
|
|
|
//picker->FileTypeFilter->Append(".7z");
|
2015-06-19 23:04:52 +00:00
|
|
|
|
|
|
|
|
|
|
picker->ViewMode = PickerViewMode::List;
|
2015-09-25 21:45:30 +00:00
|
|
|
|
picker->CommitButtonText = loader->GetString("SelectROMDirText");
|
2015-06-19 23:04:52 +00:00
|
|
|
|
|
2015-09-25 21:45:30 +00:00
|
|
|
|
task<void> t = create_task(picker->PickSingleFolderAsync()).then([this, loader](StorageFolder ^folder)
|
2015-06-19 23:04:52 +00:00
|
|
|
|
{
|
|
|
|
|
|
if (folder)
|
|
|
|
|
|
{
|
2015-06-23 14:46:09 +00:00
|
|
|
|
//store folder
|
2015-08-20 14:22:02 +00:00
|
|
|
|
//this->tmpfolder = folder;
|
|
|
|
|
|
auto tmpfolder = make_shared<StorageFolder ^>(folder);
|
2015-06-23 14:46:09 +00:00
|
|
|
|
|
2015-06-19 23:04:52 +00:00
|
|
|
|
//remove special char in path so that we can use path as token
|
|
|
|
|
|
Platform::String ^ptoken = folder->Path;
|
|
|
|
|
|
|
|
|
|
|
|
wstring token(ptoken->Begin(), ptoken->End());
|
|
|
|
|
|
replace(token.begin(), token.end(), ':', '_');
|
|
|
|
|
|
replace(token.begin(), token.end(), '/', '_');
|
|
|
|
|
|
replace(token.begin(), token.end(), '\\', '_');
|
|
|
|
|
|
ptoken = ref new Platform::String(token.c_str());
|
|
|
|
|
|
|
2015-08-20 14:22:02 +00:00
|
|
|
|
//this->tmptoken = ptoken;
|
|
|
|
|
|
auto tmptoken = make_shared<String^>(ptoken);
|
|
|
|
|
|
|
2015-07-29 21:14:08 +00:00
|
|
|
|
|
2015-06-19 23:04:52 +00:00
|
|
|
|
//add folder to future accesslist
|
|
|
|
|
|
if (!StorageApplicationPermissions::FutureAccessList->ContainsItem(ptoken))
|
|
|
|
|
|
StorageApplicationPermissions::FutureAccessList->AddOrReplace(ptoken, folder);
|
|
|
|
|
|
|
|
|
|
|
|
//get list of qualified file in folder
|
|
|
|
|
|
Search::QueryOptions ^options = ref new Search::QueryOptions();
|
|
|
|
|
|
options->FileTypeFilter->Append(".gba");
|
|
|
|
|
|
options->FileTypeFilter->Append(".gbc");
|
|
|
|
|
|
options->FileTypeFilter->Append(".gb");
|
|
|
|
|
|
//TODO: add support for other file types
|
|
|
|
|
|
return create_task(folder->CreateFileQueryWithOptions(options)->GetFilesAsync())
|
2015-09-25 21:45:30 +00:00
|
|
|
|
.then([this, tmpfolder, tmptoken, loader](IVectorView<StorageFile ^> ^files)
|
2015-06-19 23:04:52 +00:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
//open panel to let user select file
|
|
|
|
|
|
Popup ^statePopup = ref new Popup();
|
|
|
|
|
|
statePopup->IsLightDismissEnabled = true;
|
|
|
|
|
|
|
2015-08-06 14:24:47 +00:00
|
|
|
|
Vector<Platform::String ^> ^fileNames = ref new Vector<Platform::String ^>();
|
|
|
|
|
|
for (int i = 0; i < files->Size; i++)
|
|
|
|
|
|
fileNames->Append(files->GetAt(i)->Name);
|
|
|
|
|
|
|
2015-09-25 21:45:30 +00:00
|
|
|
|
SelectFilesPane ^pane = ref new SelectFilesPane(fileNames, loader->GetString("SelectFileImportText"));
|
2015-06-19 23:04:52 +00:00
|
|
|
|
statePopup->Child = pane;
|
|
|
|
|
|
pane->Width = titleBar->ActualWidth;//statePopup->Width;
|
|
|
|
|
|
pane->MaxHeight = Window::Current->Bounds.Height - 48; //statePopup->MaxHeight;
|
|
|
|
|
|
|
2015-09-25 21:45:30 +00:00
|
|
|
|
pane->FilesSelectedCallback = ref new FilesSelectedDelegate([this, tmpfolder, tmptoken, files, loader](IVector<int>^ selectedIndices)
|
2015-06-19 23:04:52 +00:00
|
|
|
|
{
|
2015-06-23 14:46:09 +00:00
|
|
|
|
|
2015-08-08 03:59:19 +00:00
|
|
|
|
vector<task<void>> tasks;
|
2015-06-23 14:46:09 +00:00
|
|
|
|
|
2015-08-08 03:59:19 +00:00
|
|
|
|
for (int i = 0; i < selectedIndices->Size; i++)
|
2015-06-23 14:46:09 +00:00
|
|
|
|
{
|
2015-08-08 03:59:19 +00:00
|
|
|
|
StorageFile^ file = files->GetAt(selectedIndices->GetAt(i));
|
2015-06-23 14:46:09 +00:00
|
|
|
|
|
2015-08-08 03:59:19 +00:00
|
|
|
|
//calculate snapshot name
|
|
|
|
|
|
Platform::String ^file_path = file->Path;
|
|
|
|
|
|
wstring wfilepath(file_path->Begin(), file_path->End());
|
|
|
|
|
|
|
|
|
|
|
|
wstring folderpath;
|
|
|
|
|
|
wstring filename;
|
|
|
|
|
|
wstring filenamenoext;
|
|
|
|
|
|
wstring ext;
|
|
|
|
|
|
splitFilePath(wfilepath, folderpath, filename, filenamenoext, ext);
|
|
|
|
|
|
|
|
|
|
|
|
wstring snapshotname = filenamenoext + L".jpg";
|
|
|
|
|
|
Platform::String^ psnapshotname = ref new Platform::String(snapshotname.c_str());
|
|
|
|
|
|
Platform::String^ pfilenamenoext = ref new Platform::String(filenamenoext.c_str());
|
2015-06-23 14:46:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
2015-08-28 03:13:48 +00:00
|
|
|
|
//create rom entry or just return the original
|
|
|
|
|
|
bool exist = false;
|
|
|
|
|
|
ROMDBEntry^ entry = nullptr;
|
|
|
|
|
|
for (int j = 0; j < App::ROMDB->AllROMDBEntries->Size; j++)
|
|
|
|
|
|
{
|
|
|
|
|
|
entry = App::ROMDB->AllROMDBEntries->GetAt(j);
|
|
|
|
|
|
if (entry->FileName == file->Name && entry->Token == *tmptoken)
|
|
|
|
|
|
{
|
|
|
|
|
|
exist = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2015-08-08 03:59:19 +00:00
|
|
|
|
|
2015-08-28 03:13:48 +00:00
|
|
|
|
if (!exist)
|
|
|
|
|
|
{
|
|
|
|
|
|
entry = ref new ROMDBEntry(1, pfilenamenoext, file->Name, (*tmpfolder)->Path,
|
|
|
|
|
|
*tmptoken, psnapshotname);
|
2015-08-08 03:59:19 +00:00
|
|
|
|
|
2015-08-28 03:13:48 +00:00
|
|
|
|
entry->Folder = *tmpfolder;
|
|
|
|
|
|
|
|
|
|
|
|
App::ROMDB->AllROMDBEntries->Append(entry);
|
2015-08-08 03:59:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-28 03:13:48 +00:00
|
|
|
|
tasks.emplace_back(
|
|
|
|
|
|
create_task(App::ROMDB->AddAsync(entry)).then([entry] {
|
2015-08-08 03:59:19 +00:00
|
|
|
|
//copy the default snapshot file over
|
|
|
|
|
|
StorageFolder ^installDir = Windows::ApplicationModel::Package::Current->InstalledLocation;
|
|
|
|
|
|
return installDir->GetFolderAsync("Assets/");
|
|
|
|
|
|
|
|
|
|
|
|
}).then([entry](StorageFolder^ assetFolder)
|
|
|
|
|
|
{
|
|
|
|
|
|
return assetFolder->GetFileAsync("no_snapshot.png");
|
|
|
|
|
|
}).then([entry](StorageFile ^file)
|
|
|
|
|
|
{
|
|
|
|
|
|
//copy snapshot file to would be location
|
|
|
|
|
|
return file->CopyAsync(entry->Folder, entry->SnapshotUri, NameCollisionOption::ReplaceExisting);
|
|
|
|
|
|
|
|
|
|
|
|
}).then([entry](StorageFile ^file)
|
|
|
|
|
|
{
|
|
|
|
|
|
//open file
|
|
|
|
|
|
return file->OpenAsync(FileAccessMode::Read);
|
|
|
|
|
|
}).then([entry](IRandomAccessStream^ stream)
|
|
|
|
|
|
{
|
|
|
|
|
|
//load bitmap image for snapshot
|
|
|
|
|
|
entry->Snapshot = ref new BitmapImage();
|
|
|
|
|
|
return entry->Snapshot->SetSourceAsync(stream);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}).then([](task<void> t)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
t.get();
|
2015-08-28 03:13:48 +00:00
|
|
|
|
|
2015-08-08 03:59:19 +00:00
|
|
|
|
}
|
2015-08-28 03:13:48 +00:00
|
|
|
|
catch (...)
|
2015-08-08 03:59:19 +00:00
|
|
|
|
{
|
|
|
|
|
|
}
|
2015-08-28 03:13:48 +00:00
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
); //end of tasks.emplace_back
|
|
|
|
|
|
}
|
2015-08-08 03:59:19 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2015-09-25 21:45:30 +00:00
|
|
|
|
when_all(begin(tasks), end(tasks)).then([this, loader](task<void> t)
|
2015-06-19 23:04:52 +00:00
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
t.get();
|
2015-09-25 21:45:30 +00:00
|
|
|
|
this->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, ref new DispatchedHandler([loader]()
|
2015-08-08 03:59:19 +00:00
|
|
|
|
{
|
|
|
|
|
|
// .get() didn't throw, so we succeeded, print out success message
|
2015-09-25 21:45:30 +00:00
|
|
|
|
MessageDialog ^dialog = ref new MessageDialog(loader->GetString("FilesImportSuccessText"));
|
2015-08-08 03:59:19 +00:00
|
|
|
|
dialog->ShowAsync();
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
2015-06-19 23:04:52 +00:00
|
|
|
|
}
|
2015-08-28 03:13:48 +00:00
|
|
|
|
catch (...)
|
2015-06-19 23:04:52 +00:00
|
|
|
|
{
|
2015-08-08 03:59:19 +00:00
|
|
|
|
// We'll handle the specific errors below.
|
2015-06-19 23:04:52 +00:00
|
|
|
|
}
|
2015-08-08 03:59:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
2015-06-19 23:04:52 +00:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
//auto transform = ((UIElement^)sender)->TransformToVisual(nullptr); //nullptr to get position related to windows
|
|
|
|
|
|
auto transform = ((UIElement^)titleBar)->TransformToVisual(nullptr);
|
|
|
|
|
|
|
|
|
|
|
|
Windows::Foundation::Point point = transform->TransformPoint(Windows::Foundation::Point());
|
2015-07-29 21:55:35 +00:00
|
|
|
|
statePopup->HorizontalOffset = point.X + 1; //+ selectStateBtn->ActualWidth / 2.0f - pane->Width / 2.0f;
|
2015-06-19 23:04:52 +00:00
|
|
|
|
statePopup->VerticalOffset = point.Y + titleBar->ActualHeight;
|
|
|
|
|
|
|
|
|
|
|
|
statePopup->IsOpen = true;
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
return create_task([] {});
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-07-15 05:02:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ImportPage::importSavbtn_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
|
|
|
|
|
|
{
|
|
|
|
|
|
FileOpenPicker ^picker = ref new FileOpenPicker();
|
|
|
|
|
|
|
|
|
|
|
|
picker->FileTypeFilter->Append(".sav");
|
|
|
|
|
|
picker->FileTypeFilter->Append(".sgm");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
picker->ViewMode = PickerViewMode::List;
|
|
|
|
|
|
//picker->CommitButtonText = "Select";
|
2015-10-06 04:54:26 +00:00
|
|
|
|
auto loader = Windows::ApplicationModel::Resources::ResourceLoader::GetForViewIndependentUse();
|
2015-07-15 05:02:33 +00:00
|
|
|
|
|
2015-09-25 21:45:30 +00:00
|
|
|
|
|
|
|
|
|
|
task<void> t = create_task(picker->PickSingleFileAsync()).then([this, loader](StorageFile ^file)
|
2015-07-15 05:02:33 +00:00
|
|
|
|
{
|
|
|
|
|
|
if (file)
|
|
|
|
|
|
{
|
|
|
|
|
|
//get the save name without extension
|
|
|
|
|
|
Platform::String ^file_path = file->Path;
|
|
|
|
|
|
wstring wfilepath(file_path->Begin(), file_path->End());
|
|
|
|
|
|
|
|
|
|
|
|
wstring folderpath;
|
|
|
|
|
|
wstring filename;
|
|
|
|
|
|
wstring filenamenoext;
|
|
|
|
|
|
wstring ext;
|
|
|
|
|
|
splitFilePath(wfilepath, folderpath, filename, filenamenoext, ext);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Platform::String^ pfilenamenoext = ref new Platform::String(filenamenoext.c_str());
|
|
|
|
|
|
|
|
|
|
|
|
ROMDBEntry^ entry = App::ROMDB->GetEntryFromName(pfilenamenoext);
|
|
|
|
|
|
|
|
|
|
|
|
if (entry == nullptr)
|
|
|
|
|
|
{
|
2015-09-25 21:45:30 +00:00
|
|
|
|
MessageDialog ^dialog = ref new MessageDialog(loader->GetString("NoMatchingROMError"), loader->GetString("ErrorText"));
|
2015-07-15 05:02:33 +00:00
|
|
|
|
dialog->ShowAsync();
|
|
|
|
|
|
return create_task([] {});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//if the file is ingame save then prevent autoloading
|
|
|
|
|
|
if (ext == L"sav")
|
|
|
|
|
|
entry->AutoLoadLastState = false;
|
|
|
|
|
|
|
|
|
|
|
|
//copy the save file over
|
|
|
|
|
|
Platform::String^ pfolderpath = ref new Platform::String(folderpath.c_str());
|
|
|
|
|
|
if (pfolderpath == entry->Folder->Path)
|
|
|
|
|
|
{
|
2015-09-25 21:45:30 +00:00
|
|
|
|
MessageDialog ^dialog = ref new MessageDialog(loader->GetString("SaveFileImportSuccessText"));
|
2015-07-15 05:02:33 +00:00
|
|
|
|
dialog->ShowAsync();
|
|
|
|
|
|
return create_task([] {});
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return create_task(file->CopyAsync(entry->Folder, file->Name, NameCollisionOption::ReplaceExisting))
|
2015-09-25 21:45:30 +00:00
|
|
|
|
.then([loader](StorageFile^ file)
|
2015-07-15 05:02:33 +00:00
|
|
|
|
{
|
2015-09-25 21:45:30 +00:00
|
|
|
|
MessageDialog ^dialog = ref new MessageDialog(loader->GetString("SaveFileImportSuccessText"));
|
2015-07-15 05:02:33 +00:00
|
|
|
|
dialog->ShowAsync();
|
|
|
|
|
|
return create_task([] {});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
return create_task([] {});
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2015-08-03 13:36:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
2015-08-03 20:20:06 +00:00
|
|
|
|
|
2015-08-03 17:00:09 +00:00
|
|
|
|
|
2015-08-03 13:36:25 +00:00
|
|
|
|
void ImportPage::Page_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//try re-sign in silently because access token expires every 1 hour
|
2015-08-03 17:00:09 +00:00
|
|
|
|
if (EmulatorSettings::Current->SignedIn)
|
2015-08-03 13:36:25 +00:00
|
|
|
|
{
|
2015-08-03 17:00:09 +00:00
|
|
|
|
//live::live_client* LiveClient = new live::live_client();
|
|
|
|
|
|
App::LiveClient->login(L"wl.skydrive_update wl.signin", true)
|
2015-08-03 13:36:25 +00:00
|
|
|
|
.then([this](bool isLoggedIn)
|
|
|
|
|
|
{
|
2015-08-04 03:27:54 +00:00
|
|
|
|
signin_Completed(isLoggedIn);
|
2015-08-03 13:36:25 +00:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2015-08-03 17:00:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ImportPage::SignInbtn_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//live::live_client* LiveClient = new live::live_client();
|
|
|
|
|
|
App::LiveClient->login(L"wl.skydrive_update wl.signin", false)
|
|
|
|
|
|
.then([this](bool isLoggedIn)
|
|
|
|
|
|
{
|
2015-08-04 03:27:54 +00:00
|
|
|
|
signin_Completed(isLoggedIn);
|
2015-08-03 17:00:09 +00:00
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2015-08-03 20:20:06 +00:00
|
|
|
|
|
2015-08-04 03:27:54 +00:00
|
|
|
|
void ImportPage::signin_Completed(bool isLoggedIn)
|
|
|
|
|
|
{
|
2015-10-06 04:54:26 +00:00
|
|
|
|
auto loader = Windows::ApplicationModel::Resources::ResourceLoader::GetForViewIndependentUse();
|
2015-09-25 21:45:30 +00:00
|
|
|
|
|
2015-08-04 03:27:54 +00:00
|
|
|
|
if (isLoggedIn)
|
|
|
|
|
|
{
|
2015-09-25 21:45:30 +00:00
|
|
|
|
this->SignInbtn->Content = loader->GetString("SignedInText");
|
2015-08-04 03:27:54 +00:00
|
|
|
|
this->SignInbtn->IsEnabled = false;
|
|
|
|
|
|
this->importOneDriveROMbtn->IsEnabled = true;
|
|
|
|
|
|
EmulatorSettings::Current->SignedIn = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2015-09-25 21:45:30 +00:00
|
|
|
|
this->SignInbtn->Content = loader->GetString("SignInText");
|
2015-08-04 03:27:54 +00:00
|
|
|
|
this->SignInbtn->IsEnabled = true;
|
|
|
|
|
|
this->importOneDriveROMbtn->IsEnabled = false;
|
|
|
|
|
|
EmulatorSettings::Current->SignedIn = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-08-03 20:20:06 +00:00
|
|
|
|
|
|
|
|
|
|
void ImportPage::importOneDriveROMbtn_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
|
|
|
|
|
|
{
|
2015-08-04 22:20:24 +00:00
|
|
|
|
Frame->Navigate(
|
|
|
|
|
|
TypeName(FileBrowserPane::typeid),
|
|
|
|
|
|
nullptr,
|
|
|
|
|
|
ref new Windows::UI::Xaml::Media::Animation::DrillInNavigationTransitionInfo());
|
2015-08-03 20:20:06 +00:00
|
|
|
|
|
2015-08-04 22:20:24 +00:00
|
|
|
|
////open panel to let user select file
|
|
|
|
|
|
//Popup ^statePopup = ref new Popup();
|
|
|
|
|
|
//statePopup->IsLightDismissEnabled = false;
|
2015-08-04 03:27:54 +00:00
|
|
|
|
|
2015-08-04 22:20:24 +00:00
|
|
|
|
//FileBrowserPane ^pane = ref new FileBrowserPane();
|
|
|
|
|
|
//statePopup->Child = pane;
|
|
|
|
|
|
//pane->Width = titleBar->ActualWidth;//statePopup->Width;
|
|
|
|
|
|
//pane->Height = Window::Current->Bounds.Height - 48; //statePopup->MaxHeight;
|
2015-08-04 03:27:54 +00:00
|
|
|
|
|
2015-08-04 22:20:24 +00:00
|
|
|
|
////pane->FileSelectedCallback = ref new FileSelectedDelegate([=](StorageFile ^file)
|
|
|
|
|
|
////{
|
2015-08-04 03:27:54 +00:00
|
|
|
|
|
2015-08-04 22:20:24 +00:00
|
|
|
|
////});
|
2015-08-04 03:27:54 +00:00
|
|
|
|
|
2015-08-04 22:20:24 +00:00
|
|
|
|
////auto transform = ((UIElement^)sender)->TransformToVisual(nullptr); //nullptr to get position related to windows
|
|
|
|
|
|
//auto transform = ((UIElement^)titleBar)->TransformToVisual(nullptr);
|
2015-08-04 03:27:54 +00:00
|
|
|
|
|
2015-08-04 22:20:24 +00:00
|
|
|
|
//Windows::Foundation::Point point = transform->TransformPoint(Windows::Foundation::Point());
|
|
|
|
|
|
//statePopup->HorizontalOffset = point.X + 1; //+ selectStateBtn->ActualWidth / 2.0f - pane->Width / 2.0f;
|
|
|
|
|
|
//statePopup->VerticalOffset = point.Y + titleBar->ActualHeight;
|
|
|
|
|
|
|
|
|
|
|
|
//statePopup->IsOpen = true;
|
2015-08-03 20:20:06 +00:00
|
|
|
|
}
|