void FeedPropertiesDialog::setFeed(Feed *feed) { m_feed = feed; if(!feed) return; setFeedName(feed->title()); setUrl(feed->xmlUrl()); setAutoFetch(feed->useCustomFetchInterval()); if(feed->useCustomFetchInterval()) setFetchInterval(feed->fetchInterval()); else setFetchInterval(Settings::autoFetchInterval()); setArchiveMode(feed->archiveMode()); setMaxArticleAge(feed->maxArticleAge()); setMaxArticleNumber(feed->maxArticleNumber()); setMarkImmediatelyAsRead(feed->markImmediatelyAsRead()); setUseNotification(feed->useNotification()); setLoadLinkedWebsite(feed->loadLinkedWebsite()); slotSetCaption(feedName()); }
void ManNotification::notify( wxString const& title, wxString const& message, long icon, bool nearCursor) { //3s par défaut + 1s de plus tout les 10 caractères. int timeout = 3+message.Len()/10; switch(_useNotification) { case USE_NOTIFICATION_NATIVE: { #ifdef __UNIX__ //Préparation de la notification. NotifyNotification * notify = notify_notification_new(title.mb_str(wxConvUTF8), message.fn_str(), nullptr); notify_notification_set_timeout(notify, timeout*1000); if(icon != wxICON_NONE) { //Récupération de l'icon wxBitmap bmpIcon(wxArtProvider::GetBitmap(wxArtProvider::GetMessageBoxIconId(icon), wxART_MESSAGE_BOX)); //Ajout de l'icône a la notification. notify_notification_set_icon_from_pixbuf(notify, bmpIcon.GetPixbuf()); } //Affichage de la notification if(!notify_notification_show(notify, nullptr)) { //Si problème wxLogError(_("The notify with libnotify could not be show.")); wxLogMessage(_("The richs notifications go to use now.")); wxMessageDialog dlg(nullptr, _("The notify with libnotify could not be show.\nThe richs notifications go to use now."), wxMessageBoxCaptionStr, wxOK|wxCENTRE|wxICON_INFORMATION); dlg.ShowModal(); setUseNotification(USE_NOTIFICATION_RICH); } g_object_unref(G_OBJECT(notify)); #else //Préparation de la notification. wxNotificationMessage notify(title, message); if(icon != wxICON_NONE) notify.SetFlags(icon); //Affichage de la notification notify.Show(timeout); #endif }break; case USE_NOTIFICATION_RICH: { //Création de la fenêtre de notification. FrameNotification *newFrameNotify = new FrameNotification(title, message, icon, _workarea.GetWidth()-2*_border); //On doit afficher la position près du curseur ? if(_nearCursor && nearCursor) { //Place la nouvelle notification au bonne endroit sur l'écran. placeFrameNotification(newFrameNotify, true); //On supprime au préalable l'ancienne notification. if(_frameNotifyNearCursor != nullptr) delete _frameNotifyNearCursor; //Et on y met la nouvelle. _frameNotifyNearCursor = newFrameNotify; } //A la suit de celle déjà existante ? else if(_multipleNotifications) { //Faire de la place. makeSpaceFrameMultipleNotification(newFrameNotify->GetSize().y); //Place la nouvelle notification au bonne endroit sur l'écran. placeFrameNotification(newFrameNotify, false); //Ajout de la notification à la pile. _framesNotifyMultiple.push_back(newFrameNotify); } //On doit afficher qu'une notification ? else { //Place la nouvelle notification au bonne endroit sur l'écran. placeFrameNotification(newFrameNotify, false); //On supprime au préalable l'ancienne notification. if(_frameNotify != nullptr) delete _frameNotify; //Et on y met la nouvelle. _frameNotify = newFrameNotify; } //Lier l'évènement de fermeture de la notification. newFrameNotify->Bind(wxEVT_CLOSE_WINDOW, &ManNotification::onCloseFrameNotification, this); //Enfin, affiche la notification. newFrameNotify->show(timeout); }break; } }