void OnVanish(const std::string& name) override;
void OnAppear(const std::string& name, const std::string& name_owner) override;
std::list<std::string>& GetRequiredPrivileges();
+ int NotifyProviderReady();
Impl(ComplicationProvider* parent, const std::string& provider_id, bool mock);
class SenderInfo {
public:
ComplicationProvider::ComplicationProvider(const std::string& provider_id, bool mock)
: impl_(new Impl(this, provider_id, mock)) {
+ impl_->NotifyProviderReady();
}
ComplicationProvider::~ComplicationProvider() = default;
}
}
+int ComplicationProvider::Impl::NotifyProviderReady() {
+ LOGI("notify %s", provider_id_.c_str());
+ if (!gdbus_.get()->EmitSignal(IGDBus::Complication, "",
+ provider_id_, -1, util::GetCmdStr(util::ProviderReady),
+ g_variant_new("(s)", provider_id_.c_str())))
+ return WATCHFACE_COMPLICATION_ERROR_IO_ERROR;
+ return WATCHFACE_COMPLICATION_ERROR_NONE;
+}
+
void ComplicationProvider::Impl::OnAppear(const std::string& name,
const std::string& name_owner) {
}
const std::string& sender_name);
void UpdatedProcess(GVariant* parameters);
void NotifyDataUpdateProcess(GVariant* parameters);
+ void ProviderReadyProcess(GVariant* parameters);
int UpdateCurProvider(std::string new_provider_id, ComplicationType type);
private:
void Complication::Impl::OnAppear(const std::string& name,
const std::string& name_owner) {
LOGI("OnAppear %s ", name.c_str());
- parent_->SendDataUpdateRequest(false);
}
bool Complication::Impl::IsValidSender(GDBusConnection* connection,
parent_->OnNotifyDataUpdate();
}
+void Complication::Impl::ProviderReadyProcess(GVariant* parameters) {
+ char* provider_id;
+ g_variant_get(parameters, "(&s)", &provider_id);
+ if (strcmp(cur_provider_id_.c_str(), provider_id) != 0) {
+ LOGI("It's not mine %s", provider_id);
+ return;
+ }
+ parent_->SendDataUpdateRequest(false);
+}
+
void Complication::Impl::OnSignal(GDBusConnection* connection,
const std::string& sender_name,
const std::string& object_path,
} else if (signal_name.compare(
util::GetCmdStr(util::CompNotifyDataUpdate)) == 0) {
NotifyDataUpdateProcess(parameters);
+ } else if (signal_name.compare(
+ util::GetCmdStr(util::ProviderReady)) == 0) {
+ ProviderReadyProcess(parameters);
}
}