diff --git a/MainPage.xaml b/MainPage.xaml index d803ef701cfcc1e98c8cbc7a346a6ff01be8ff9d..40fcbd1f868c2366457916711306e75736755eab 100644 --- a/MainPage.xaml +++ b/MainPage.xaml @@ -51,18 +51,38 @@ Width="auto" Height="auto"> </Rectangle> - <Canvas Canvas.ZIndex="6"> + <TextBlock x:Name="_loadingStatus_" + Foreground="Red" + Canvas.ZIndex="7" + HorizontalAlignment="Center" + VerticalAlignment="Center" + Text="[LOADING STATE]"> + <TextBlock.RenderTransform> + <TranslateTransform X="0" Y="100"/> + </TextBlock.RenderTransform> + </TextBlock> + <Canvas Canvas.ZIndex="6" + HorizontalAlignment="Center" + VerticalAlignment="Center"> <Image x:Name="_loadingImage_" Source="Assets/SplashScreen.scale-200.png" Width="620" - Height="300"/> + Height="300"> + <Image.RenderTransform> + <TranslateTransform X="-310" Y="-150"/> + </Image.RenderTransform> + </Image> <ProgressRing x:Name="_splashProgressRing_" Foreground="#19a0b7" IsActive="True" MaxWidth="200" MaxHeight="200" - Width="118" - Height="118"/> + Width="136" + Height="136"> + <ProgressRing.RenderTransform> + <TranslateTransform X="-166" Y="-68"/> + </ProgressRing.RenderTransform> + </ProgressRing> </Canvas> </Grid> <SplitView x:Name="_outerSplitView_" diff --git a/MainPage.xaml.cpp b/MainPage.xaml.cpp index 99e016d9dd19d7df66b72a853e3447b42bb1b5cc..52e093f07c80325926b02c14388687545def322e 100644 --- a/MainPage.xaml.cpp +++ b/MainPage.xaml.cpp @@ -95,6 +95,13 @@ MainPage::MainPage() RingD::instance->registrationStateErrorGeneric += ref new RingClientUWP::RegistrationStateErrorGeneric(this, &RingClientUWP::MainPage::OnregistrationStateErrorGeneric); RingD::instance->registrationStateRegistered += ref new RingClientUWP::RegistrationStateRegistered(this, &RingClientUWP::MainPage::OnregistrationStateRegistered); RingD::instance->callPlaced += ref new RingClientUWP::CallPlaced(this, &RingClientUWP::MainPage::OncallPlaced); + + RingD::instance->setLoadingStatusText += ref new SetLoadingStatusText([this](String^ statusText, String^ color){ + _loadingStatus_->Text = statusText; + auto col = Utils::ColorFromString(color); + auto brush = ref new Windows::UI::Xaml::Media::SolidColorBrush(col); + _loadingStatus_->Foreground = brush; + }); } void @@ -158,17 +165,6 @@ RingClientUWP::MainPage::showLoadingOverlay(bool load, bool modal) _loadingOverlayRect_->Fill = whiteBrush; _loadingOverlayRect_->Opacity = 1.0; } - TimeSpan delay; - delay.Duration = 10000 * 50; - ThreadPoolTimer^ delayTimer = ThreadPoolTimer::CreateTimer( - ref new TimerElapsedHandler([this](ThreadPoolTimer^ source) - { - Dispatcher->RunAsync(CoreDispatcherPriority::High, - ref new DispatchedHandler([this]() - { - OnResize(nullptr, nullptr); - })); - }), delay); } else if (!load && isLoading) { isLoading = false; @@ -176,44 +172,9 @@ RingClientUWP::MainPage::showLoadingOverlay(bool load, bool modal) } } -void -RingClientUWP::MainPage::PositionImage() -{ - bounds = ApplicationView::GetForCurrentView()->VisibleBounds; - - auto img = ref new Image(); - auto bitmapImage = ref new Windows::UI::Xaml::Media::Imaging::BitmapImage(); - Windows::Foundation::Uri^ uri; - - _loadingImage_->SetValue(Canvas::LeftProperty, bounds.Width * 0.5 - _loadingImage_->Width * 0.5); - _loadingImage_->SetValue(Canvas::TopProperty, bounds.Height * 0.5 - _loadingImage_->Height * 0.5); -} - -void -RingClientUWP::MainPage::PositionRing() -{ - double left; - double top; - - _splashProgressRing_->Width = 144; - _splashProgressRing_->Height = 144; - - left = bounds.Width * 0.5 - _loadingImage_->Width * 0.5 + 139; - top = bounds.Height * 0.5 - _loadingImage_->Height * 0.5 + 78; - - _splashProgressRing_->SetValue(Canvas::LeftProperty, left); - _splashProgressRing_->SetValue(Canvas::TopProperty, top); -} - void RingClientUWP::MainPage::OnResize(Platform::Object^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ e) { - Dispatcher->RunAsync(CoreDispatcherPriority::High, - ref new DispatchedHandler([this]() - { - PositionImage(); - PositionRing(); - })); } void diff --git a/MainPage.xaml.h b/MainPage.xaml.h index 5abe2b28071a14750dffa658df1a9267e28b59dc..f04bc26c6ec771dc0759b85b4fa1595e0ee12a3f 100644 --- a/MainPage.xaml.h +++ b/MainPage.xaml.h @@ -44,8 +44,6 @@ protected: virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; virtual void OnKeyDown(KeyRoutedEventArgs^ e) override; - void PositionImage(); - void PositionRing(); void OnResize(Platform::Object^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ e); private: diff --git a/RingD.cpp b/RingD.cpp index b0ce153ffbe84d9b9ac86d25a663cbc77290c89a..0f9563f1bb64df400703d71fc46e230f26d9e19a 100644 --- a/RingD.cpp +++ b/RingD.cpp @@ -452,7 +452,7 @@ RingD::registerCallbacks() if (state3 == CallStatus::OUTGOING_RINGING || state3 == CallStatus::INCOMING_RINGING) { try { - Configuration::UserPreferences::instance->sendVCard(callId); + //Configuration::UserPreferences::instance->sendVCard(callId); } catch (Exception^ e) { EXC_(e); @@ -539,6 +539,13 @@ RingD::registerCallbacks() dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(false, false); editModeOn_ = false; }*/ + setLoadingStatusText("Registration successful", "#ff00ff00"); + })); + } + else if (state == DRing::Account::States::TRYING) { + CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High, + ref new DispatchedHandler([=]() { + setLoadingStatusText("Attempting to register account...", "#ff00f0f0"); })); } else if (state == DRing::Account::States::ERROR_GENERIC @@ -555,6 +562,7 @@ RingD::registerCallbacks() ref new DispatchedHandler([=]() { reloadAccountList(); registrationStateErrorGeneric(account_id); + setLoadingStatusText(Utils::toPlatformString("Failed to register account: " + state), "#ffff0000"); // ajoute cet event dans le wizard })); } @@ -572,13 +580,16 @@ RingD::registerCallbacks() }*/ })); }), - DRing::exportable_callback<DRing::Debug::MessageSend>([&](const std::string& toto) + DRing::exportable_callback<DRing::Debug::MessageSend>([&](const std::string& msg) { - if (debugModeOn_) + if (debugModeOn_) { dispatcher->RunAsync(CoreDispatcherPriority::High, - ref new DispatchedHandler([=]() { - DMSG_(toto); - })); + ref new DispatchedHandler([=]() { + std::string displayMsg = msg.substr(56); + setLoadingStatusText(Utils::toPlatformString(displayMsg.substr(0,40) + "..."), "#ff000000"); + DMSG_(msg); + })); + } }) }; registerCallHandlers(callHandlers); diff --git a/RingD.h b/RingD.h index e5a2e3b5d08d874a96ae52b403e502ce567f37ce..e47ce0aa2b287de024189bce1a385dc1949de422 100644 --- a/RingD.h +++ b/RingD.h @@ -42,6 +42,7 @@ delegate void RegisteredNameFound(LookupStatus status, const std::string& addres delegate void FinishCaptureDeviceEnumeration(); delegate void RegistrationStateErrorGeneric(const std::string& accountId); delegate void RegistrationStateRegistered(); +delegate void SetLoadingStatusText(String^ statusText, String^ color); delegate void CallsListRecieved(const std::vector<std::string>& callsList); delegate void AudioMuted(const std::string& callId, bool state); @@ -156,6 +157,7 @@ internal: event FinishCaptureDeviceEnumeration^ finishCaptureDeviceEnumeration; event RegistrationStateErrorGeneric^ registrationStateErrorGeneric; event RegistrationStateRegistered^ registrationStateRegistered; + event SetLoadingStatusText^ setLoadingStatusText; event CallsListRecieved^ callsListRecieved; // est implemente a la base pour regler le probleme du boutton d'appel qui est present lorsqu'un appel est en cours, mais il n'est pas utilise. Voir si ca peut servir a autre chose event AudioMuted^ audioMuted; diff --git a/Utils.h b/Utils.h index b94ff7346fa22137197d19df2fbb9049c2f7c883..d5962b3a416c24a24409353f61af1c7fff062c2a 100644 --- a/Utils.h +++ b/Utils.h @@ -276,6 +276,15 @@ genID(long long lower, long long upper) return o.str(); } +Windows::UI::Color +ColorFromString(String^ s) +{ + int a,r,g,b; + if (sscanf_s(Utils::toString(s).c_str(), "#%2x%2x%2x%2x", &a, &r, &g, &b) == 4) + return Windows::UI::ColorHelper::FromArgb(a, r, g, b); + else + return Windows::UI::ColorHelper::FromArgb(255, 0, 0, 0); +} } /*namespace Utils*/ } /*namespace RingClientUWP*/ \ No newline at end of file