From 15855fa84a09fd1fd486d357c38db0f2bd181e74 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 4 Mar 2014 23:23:45 +0000 Subject: HistoryStats compiles ok now git-svn-id: http://svn.miranda-ng.org/main/trunk@8399 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/HistoryStats/src/column_splittimeline.h | 101 ++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 plugins/HistoryStats/src/column_splittimeline.h (limited to 'plugins/HistoryStats/src/column_splittimeline.h') diff --git a/plugins/HistoryStats/src/column_splittimeline.h b/plugins/HistoryStats/src/column_splittimeline.h new file mode 100644 index 0000000000..e3754f5891 --- /dev/null +++ b/plugins/HistoryStats/src/column_splittimeline.h @@ -0,0 +1,101 @@ +#if !defined(HISTORYSTATS_GUARD_COLUMN_SPLITTIMELINE_H) +#define HISTORYSTATS_GUARD_COLUMN_SPLITTIMELINE_H + +#include "column.h" + +/* + * ColSplitTimeline + */ + +class ColSplitTimeline + : public Column +{ +public: + typedef std::map TimelineMap; + + struct SplitParams { + int alignment; // 0 = day, 1 = week + int columns_to_group; + int hours_in_block; + int blocks_in_column; + int effective_vis_mode; + }; + +private: + int m_nSource; // 0 = characters, 1 = messages, 2 = chats + int m_nSourceType; // 0 = in, 1 = out, 2 = total, 3 = ratio + int m_nIgnoreOld; + int m_nVisMode; // 0 = hours of day, 1 = days of week, 2 = custom + int m_nHODGroup; + int m_nDOWGroup; + int m_nBlockUnit; // 0 = hours, 1 = days, 2 = weeks + int m_nUnitsPerBlock; + int m_nBlocks; + int m_nGraphAlign; // 0 = day boundary, 1 = week boundary + int m_nCustomGroup; + bool m_bTopPerColumn; + + OptionsCtrl::Combo m_hSource; + OptionsCtrl::Edit m_hIgnoreOld; + OptionsCtrl::Radio m_hVisMode; + OptionsCtrl::Edit m_hHODGroup; + OptionsCtrl::Edit m_hDOWGroup; + OptionsCtrl::Combo m_hBlockUnit; + OptionsCtrl::Edit m_hUnitsPerBlock; + OptionsCtrl::Edit m_hBlocks; + OptionsCtrl::Radio m_hGraphAlign; + OptionsCtrl::Edit m_hCustomGroup; + OptionsCtrl::Check m_hTopPerColumn; + + DWORD m_nTimeDiv; + DWORD m_nTimeOffset; + int m_nTimelineWidth; + int m_nBlockOffset; + int m_nNumBlocks; + +private: + int getValue(const InOut& value) + { + switch (m_nSourceType) + { + case 0: return value.in; + case 1: return value.out; + case 2: return value.total(); + } + + return 0; + } + + SplitParams getParams() const; + void addToSlot(Contact& contact, bool bOutgoing, DWORD localTimestamp, int toAdd); + + void outputRenderRowInOut(ext::ostream& tos, const Contact& contact, DisplayType display); + void outputRenderRowRatio(ext::ostream& tos, const Contact& contact, DisplayType display); + +public: + explicit ColSplitTimeline(); + +protected: + virtual const mu_text* impl_getUID() const { return con::ColSplitTimeline; } + virtual const mu_text* impl_getTitle() const { return i18n(muT("\"Split\" timeline")); } + virtual const mu_text* impl_getDescription() const { return i18n(muT("Column holding a graphical overview of your chatting behaviour (out, in, total, in/out ratio) from the first to the last day of your history. The information is spread along x- and y-axis and the values are encoded as color values. Different chatting behaviour measures are available.")); } + virtual void impl_copyConfig(const Column* pSource); + virtual int impl_getFeatures() const { return cfHasConfig | cfAcquiresData; } + virtual void impl_configRead(const SettingsTree& settings); + virtual void impl_configWrite(SettingsTree& settings) const; + virtual void impl_configToUI(OptionsCtrl& Opt, OptionsCtrl::Item hGroup); + virtual void impl_configFromUI(OptionsCtrl& Opt); + virtual int impl_configGetRestrictions(ext::string* pDetails) const { return crPNGFull; } + virtual ext::string impl_contactDataGetUID() const; + virtual void impl_contactDataBeginAcquire(); + virtual void impl_contactDataPrepare(Contact& contact) const; + virtual void impl_contactDataFree(Contact& contact) const; + virtual void impl_contactDataAcquireMessage(Contact& contact, Message& msg); + virtual void impl_contactDataAcquireChat(Contact& contact, bool bOutgoing, DWORD localTimestampStarted, DWORD duration); + virtual void impl_contactDataMerge(Contact& contact, const Contact& include) const; + virtual void impl_columnDataAfterOmit(); + virtual void impl_outputRenderHeader(ext::ostream& tos, int row, int rowSpan) const; + virtual void impl_outputRenderRow(ext::ostream& tos, const Contact& contact, DisplayType display); +}; + +#endif // HISTORYSTATS_GUARD_COLUMN_SPLITTIMELINE_H \ No newline at end of file -- cgit v1.2.3