diff --git a/.gitignore b/.gitignore index 71b19050..8953b541 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ ui_*.h moc_predefs.h src/res/qrc_resources.cpp windows/ASIOSDK2 +windows/VC_redist.x64.exe debug/ jamulus.sln jamulus.vcxproj diff --git a/src/global.h b/src/global.h index 9afe797f..4fad8793 100755 --- a/src/global.h +++ b/src/global.h @@ -92,6 +92,9 @@ LED bar: lbr // file name for logging file #define DEFAULT_LOG_FILE_NAME "Jamulussrvlog.txt" +// default oldest item to draw in history graph (days ago) +#define DEFAULT_DAYS_HISTORY 60 + // default server address #define DEFAULT_SERVER_ADDRESS "jamulus.fischvolk.de" #define DEFAULT_SERVER_NAME "Central Server" diff --git a/src/historygraph.cpp b/src/historygraph.cpp index e9bd682a..175e9de2 100644 --- a/src/historygraph.cpp +++ b/src/historygraph.cpp @@ -27,11 +27,12 @@ /* Abstract class *************************************************************/ -AHistoryGraph::AHistoryGraph() : +AHistoryGraph::AHistoryGraph ( const int iMaxDaysHistory ) : sFileName ( "" ), bDoHistory ( false ), vHistoryDataFifo ( NUM_ITEMS_HISTORY ), iNumTicksX ( 0 ), // number of days in history + iHistMaxDays ( iMaxDaysHistory ), BackgroundColor ( "white" ), // background FrameColor ( "black" ), // frame @@ -67,8 +68,8 @@ AHistoryGraph::AHistoryGraph() : iTextOffsetToGrid ( 3 ), iTextOffsetX ( 18 ), - iMarkerSizeNewCon ( 11 ), - iMarkerSizeServSt ( 8 ) + iMarkerSizeNewCon ( 10 ), + iMarkerSizeServSt ( 6 ) { } @@ -136,7 +137,7 @@ void AHistoryGraph::Update ( ) curDate = QDate::currentDate(); // set oldest date to draw - QDate minDate = curDate.addDays ( MAX_DAYS_HISTORY * -1 ); + QDate minDate = curDate.addDays ( iHistMaxDays * -1 ); // get oldest date in history QDate oldestDate = curDate.addDays ( 1 ); // one day in the future @@ -298,9 +299,9 @@ void AHistoryGraph::AddMarker ( const SHistoryData& curHistoryData ) /* JPEG History Graph implementation ******************************************/ -CJpegHistoryGraph::CJpegHistoryGraph() : - AHistoryGraph(), - PlotPixmap ( 1, 1, QImage::Format_RGB32 ), +CJpegHistoryGraph::CJpegHistoryGraph ( const int iMaxDaysHistory ) : + AHistoryGraph ( iMaxDaysHistory ), + PlotPixmap ( 1, 1, QImage::Format_RGB32 ), iAxisFontWeight ( -1 ) { // scale pixmap to correct size @@ -403,9 +404,9 @@ void CJpegHistoryGraph::point ( const unsigned int x, const unsigned int y, cons /* SVG History Graph implementation *******************************************/ -CSvgHistoryGraph::CSvgHistoryGraph() : - AHistoryGraph(), - svgImage ( "" ), +CSvgHistoryGraph::CSvgHistoryGraph ( const int iMaxDaysHistory ) : + AHistoryGraph ( iMaxDaysHistory ), + svgImage ( "" ), svgStreamWriter ( &svgImage ) { // set SVG veiwBox to correct size to ensure correct scaling diff --git a/src/historygraph.h b/src/historygraph.h index cc03df97..1a5709b4 100644 --- a/src/historygraph.h +++ b/src/historygraph.h @@ -44,10 +44,7 @@ /* Definitions ****************************************************************/ // number of history items to store -#define NUM_ITEMS_HISTORY 4800 - -// oldest item to draw -#define MAX_DAYS_HISTORY 60 +#define NUM_ITEMS_HISTORY 20000 /* Interface ******************************************************************/ @@ -61,7 +58,7 @@ public: HIT_SERVER_STOP }; - AHistoryGraph(); + AHistoryGraph ( const int iMaxDaysHistory ); ~AHistoryGraph() { } void Start ( const QString& sNewFileName ); @@ -89,6 +86,7 @@ protected: bool bDoHistory; CFIFO vHistoryDataFifo; unsigned int iNumTicksX; // Class global, not sure why + int iHistMaxDays; QString BackgroundColor; QString FrameColor; @@ -141,7 +139,7 @@ class CJpegHistoryGraph : public QObject, virtual public AHistoryGraph Q_OBJECT public: - CJpegHistoryGraph(); + CJpegHistoryGraph ( const int iMaxDaysHistory ); virtual void Update ( ); protected: @@ -165,7 +163,7 @@ class CSvgHistoryGraph : public QObject, virtual public AHistoryGraph Q_OBJECT public: - CSvgHistoryGraph(); + CSvgHistoryGraph ( const int iMaxDaysHistory ); virtual void Update(); protected: diff --git a/src/main.cpp b/src/main.cpp index 85bcb444..dc6e3edc 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -53,6 +53,7 @@ int main ( int argc, char** argv ) bool bCentServPingServerInList = false; bool bNoAutoJackConnect = false; int iNumServerChannels = DEFAULT_USED_NUM_CHANNELS; + int iMaxDaysHistory = DEFAULT_DAYS_HISTORY; int iCtrlMIDIChannel = INVALID_MIDI_CH; quint16 iPortNumber = LLCON_DEFAULT_PORT_NUMBER; ELicenceType eLicenceType = LT_NO_LICENCE; @@ -129,6 +130,25 @@ int main ( int argc, char** argv ) } + // Maximum days in history display ------------------------------------- + if ( GetNumericArgument ( tsConsole, + argc, + argv, + i, + "-D", + "--histdays", + 1, + 366, + rDbleArgument ) ) + { + iMaxDaysHistory = static_cast ( rDbleArgument ); + + tsConsole << "- maximum days in history display: " + << iMaxDaysHistory << endl; + + continue; + } + // Start minimized ----------------------------------------------------- if ( GetFlagArgument ( argv, @@ -496,6 +516,7 @@ int main ( int argc, char** argv ) // Server: // actual server object CServer Server ( iNumServerChannels, + iMaxDaysHistory, strLoggingFileName, iPortNumber, strHTMLStatusFileName, @@ -610,6 +631,7 @@ QString UsageArguments ( char **argv ) " -w, --welcomemessage welcome message on connect (server only)\n" " -y, --history enable connection history and set file\n" " name (server only)\n" + " -D, --histdays number of days of history to display (server only)\n" " -z, --startminimized start minimizied (server only)\n" " --ctrlmidich MIDI controller channel to listen (client only)" "\nExample: " + QString ( argv[0] ) + " -l -inifile myinifile.ini\n"; diff --git a/src/server.cpp b/src/server.cpp index 0d281e5e..d49c6954 100755 --- a/src/server.cpp +++ b/src/server.cpp @@ -198,6 +198,7 @@ void CHighPrecisionTimer::run() // CServer implementation ****************************************************** CServer::CServer ( const int iNewMaxNumChan, + const int iMaxDaysHistory, const QString& strLoggingFileName, const quint16 iPortNumber, const QString& strHTMLStatusFileName, @@ -212,6 +213,7 @@ CServer::CServer ( const int iNewMaxNumChan, const ELicenceType eNLicenceType ) : iMaxNumChannels ( iNewMaxNumChan ), Socket ( this, iPortNumber ), + Logging ( iMaxDaysHistory ), JamRecorder ( strRecordingDirName ), bEnableRecording ( !strRecordingDirName.isEmpty() ), bWriteStatusHTMLFile ( false ), diff --git a/src/server.h b/src/server.h index f1a947ab..2e83c45e 100755 --- a/src/server.h +++ b/src/server.h @@ -119,6 +119,7 @@ class CServer : public QObject public: CServer ( const int iNewMaxNumChan, + const int iMaxDaysHistory, const QString& strLoggingFileName, const quint16 iPortNumber, const QString& strHTMLStatusFileName, diff --git a/src/serverlogging.cpp b/src/serverlogging.cpp index 8c401c3a..3b70096f 100755 --- a/src/serverlogging.cpp +++ b/src/serverlogging.cpp @@ -82,8 +82,8 @@ void CServerLogging::AddServerStopped() *this << strLogStr; // in log file // add element to history and update on server stop - JpegHistoryGraph.Add ( QDateTime::currentDateTime(), CJpegHistoryGraph::HIT_SERVER_STOP ); - SvgHistoryGraph.Add ( QDateTime::currentDateTime(), CJpegHistoryGraph::HIT_SERVER_STOP ); + JpegHistoryGraph.Add ( QDateTime::currentDateTime(), AHistoryGraph::HIT_SERVER_STOP ); + SvgHistoryGraph.Add ( QDateTime::currentDateTime(), AHistoryGraph::HIT_SERVER_STOP ); JpegHistoryGraph.Update(); SvgHistoryGraph.Update(); @@ -140,7 +140,7 @@ void CServerLogging::ParseLogFile ( const QString& strFileName ) if ( strAddress.isEmpty() ) { // server stop - JpegHistoryGraph.Add ( curDateTime, CJpegHistoryGraph::HIT_SERVER_STOP ); + JpegHistoryGraph.Add ( curDateTime, AHistoryGraph::HIT_SERVER_STOP ); SvgHistoryGraph.Add ( curDateTime, CSvgHistoryGraph::HIT_SERVER_STOP ); } else diff --git a/src/serverlogging.h b/src/serverlogging.h index aa4344d9..15137abc 100755 --- a/src/serverlogging.h +++ b/src/serverlogging.h @@ -38,8 +38,12 @@ class CServerLogging { public: - CServerLogging() : bDoLogging ( false ), + CServerLogging ( const int iMaxDaysHistory ) : + JpegHistoryGraph ( iMaxDaysHistory ), + SvgHistoryGraph ( iMaxDaysHistory ), + bDoLogging ( false ), File ( DEFAULT_LOG_FILE_NAME ) {} + virtual ~CServerLogging(); void Start ( const QString& strLoggingFileName ); @@ -56,4 +60,8 @@ protected: CSvgHistoryGraph SvgHistoryGraph; bool bDoLogging; QFile File; + +private: + int iHistNumItems; + int iHistMaxDays; };