default initialisation for the backends

This commit is contained in:
Patrick von Reth 2013-07-18 16:59:06 +02:00
parent 50b78c6cca
commit b2cad9a712
3 changed files with 51 additions and 8 deletions

View File

@ -286,24 +286,60 @@ const QStringList &SnoreCore::secondaryNotificationBackends() const
return m_secondaryNotificationBackends; return m_secondaryNotificationBackends;
} }
void SnoreCore::setPrimaryNotificationBackend ( const QString &backend ) bool SnoreCore::setPrimaryNotificationBackend ( const QString &backend )
{ {
if(!pluginCache().contains(backend)){ if(!pluginCache().contains(backend)){
qDebug()<<"Unknown Backend:"<<backend; qDebug()<<"Unknown Backend:"<<backend;
return; return false;
} }
qDebug()<<"Setting Notification Backend to:"<<backend; qDebug()<<"Setting Notification Backend to:"<<backend;
SnoreBackend* b = qobject_cast<SnoreBackend*>(pluginCache()[backend]->load()); SnoreBackend* b = qobject_cast<SnoreBackend*>(pluginCache()[backend]->load());
if(!b->isInitialized()){ if(!b->isInitialized()){
if(!b->init(this)){ if(!b->init(this)){
qDebug()<<"Failed to initialize"<<b->name(); qDebug()<<"Failed to initialize"<<b->name();
return; return false;
} }
connect(b,SIGNAL(closeNotification(Snore::Notification)),this,SLOT(slotNotificationClosed(Snore::Notification))); connect(b,SIGNAL(closeNotification(Snore::Notification)),this,SLOT(slotNotificationClosed(Snore::Notification)));
} }
m_notificationBackend = b; m_notificationBackend = b;
return true;
}
bool SnoreCore::setPrimaryNotificationBackend()
{
QStringList backends = notificationBackends();
#ifdef Q_OS_WIN
if(QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS8 && backends.contains("SnoreToast"))
{
if(setPrimaryNotificationBackend("SnoreToast"))
return true;
}
if( backends.contains("Growl"))
{
if(setPrimaryNotificationBackend("Growl"))
return true;
}
if( backends.contains("Snarl"))
{
if(setPrimaryNotificationBackend("Snarl"))
return true;
}
#elif defined(Q_OS_LINUX)
if( backends.contains("FreedesktopNotification_Backend"))
{
return setPrimaryNotificationBackend("FreedesktopNotification_Backend");
}
#elif defined(Q_OS_MAC)
if( backends.contains("Growl"))
{
return setPrimaryNotificationBackend("Growl");
}
#endif
if( trayIcon() && backends.contains("SystemTray"))
{
return setPrimaryNotificationBackend("SystemTray");
}
return false;
} }
const QString &SnoreCore::primaryNotificationBackend(){ const QString &SnoreCore::primaryNotificationBackend(){

View File

@ -60,7 +60,8 @@ public:
const QStringList &notificationFrontends() const; const QStringList &notificationFrontends() const;
const QStringList &secondaryNotificationBackends() const; const QStringList &secondaryNotificationBackends() const;
void setPrimaryNotificationBackend ( const QString &backend ); bool setPrimaryNotificationBackend( const QString &backend );
bool setPrimaryNotificationBackend();
const QString &primaryNotificationBackend(); const QString &primaryNotificationBackend();
QSystemTrayIcon *trayIcon(); QSystemTrayIcon *trayIcon();

View File

@ -54,9 +54,15 @@ SnoreNotify::~SnoreNotify(){
} }
void SnoreNotify::load(){ void SnoreNotify::load(){
m_snore->setPrimaryNotificationBackend(m_settings.value("notificationBackend","SystemTray").toString()); if(m_settings.contains("notificationBackend"))
{
m_snore->setPrimaryNotificationBackend(m_settings.value("notificationBackend","SystemTray").toString());
}
else
{
m_snore->setPrimaryNotificationBackend();
}
} }
void SnoreNotify::save(){ void SnoreNotify::save(){
m_settings.setValue("notificationBackend",m_snore->primaryNotificationBackend()); m_settings.setValue("notificationBackend",m_snore->primaryNotificationBackend());
} }