2018-11-14 15:14:40 -05:00
/*******************************************************************************
* retroshare - gui / src / gui / gxs / RsGxsUpdateBroadcastPage . h *
* *
* Copyright 2014 Retroshare Team < retroshare . project @ gmail . com > *
* *
* This program is free software : you can redistribute it and / or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation , either version 3 of the *
* License , or ( at your option ) any later version . *
* *
* This program is distributed in the hope that it will be useful , *
* but WITHOUT ANY WARRANTY ; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the *
* GNU Affero General Public License for more details . *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program . If not , see < https : //www.gnu.org/licenses/>. *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2013-07-14 14:48:40 -04:00
# pragma once
# include "mainpage.h"
# include <retroshare/rsgxsifacetypes.h>
// This class implement a basic RS functionality which is that widgets displaying info
// should update regularly. They also should update only when visible, to save CPU time.
//
// Using this class simply needs to derive your widget from RsGxsUpdateBroadcastPage
// and oveload the updateDisplay() function with the actual code that updates the
// widget.
//
2019-02-14 16:48:33 -05:00
struct RsGxsIfaceHelper ;
2013-07-14 14:48:40 -04:00
class RsGxsUpdateBroadcastBase ;
2018-06-23 16:25:36 -04:00
typedef uint32_t TurtleRequestId ;
2013-07-14 14:48:40 -04:00
class RsGxsUpdateBroadcastPage : public MainPage
{
Q_OBJECT
public :
RsGxsUpdateBroadcastPage ( RsGxsIfaceHelper * ifaceImpl , QWidget * parent = NULL , Qt : : WindowFlags flags = 0 ) ;
virtual ~ RsGxsUpdateBroadcastPage ( ) ;
2014-05-05 17:53:47 -04:00
void fillComplete ( ) ;
2013-07-14 14:48:40 -04:00
void setUpdateWhenInvisible ( bool update ) ;
2018-06-21 09:46:59 -04:00
const std : : set < RsGxsGroupId > & getGrpIds ( ) ;
const std : : set < RsGxsGroupId > & getGrpIdsMeta ( ) ;
void getAllGrpIds ( std : : set < RsGxsGroupId > & grpIds ) ;
const std : : map < RsGxsGroupId , std : : set < RsGxsMessageId > > & getMsgIds ( ) ;
const std : : map < RsGxsGroupId , std : : set < RsGxsMessageId > > & getMsgIdsMeta ( ) ;
void getAllMsgIds ( std : : map < RsGxsGroupId , std : : set < RsGxsMessageId > > & msgIds ) ;
2020-02-03 15:39:05 -05:00
2020-02-06 13:57:23 -05:00
virtual const std : : set < TurtleRequestId > getSearchRequests ( ) const { return std : : set < TurtleRequestId > ( ) ; } // overload this for subclasses that provide distant search
2013-07-14 14:48:40 -04:00
protected :
virtual void showEvent ( QShowEvent * event ) ;
// This is overloaded in subclasses.
2013-07-19 05:48:51 -04:00
virtual void updateDisplay ( bool complete ) = 0 ;
2013-07-14 14:48:40 -04:00
2018-05-16 05:15:18 -04:00
public slots :
2013-07-19 05:48:51 -04:00
void fillDisplay ( bool complete ) ;
2013-07-14 14:48:40 -04:00
private :
RsGxsUpdateBroadcastBase * mBase ;
} ;