예제 #1
0
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());
}
예제 #2
0
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;
	}
}