LeechCraft Azoth
0.6.70-13907-g785196c688
Modular multiprotocol IM plugin for LeechCraft
azothutil.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Boost Software License - Version 1.0 - August 17th, 2003
6
*
7
* Permission is hereby granted, free of charge, to any person or organization
8
* obtaining a copy of the software and accompanying documentation covered by
9
* this license (the "Software") to use, reproduce, display, distribute,
10
* execute, and transmit the Software, and to prepare derivative works of the
11
* Software, and to permit third-parties to whom the Software is furnished to
12
* do so, all subject to the following:
13
*
14
* The copyright notices in the Software and this entire statement, including
15
* the above license grant, this restriction and the following disclaimer,
16
* must be included in all copies of the Software, in whole or in part, and
17
* all derivative works of the Software, unless such copies or derivative
18
* works are solely in the form of machine-executable object code generated by
19
* a source language processor.
20
*
21
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
* FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
24
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
25
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
26
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27
* DEALINGS IN THE SOFTWARE.
28
**********************************************************************/
29
30
#pragma once
31
32
#include <QList>
33
#include <QDateTime>
34
#include <QtDebug>
35
#include <
interfaces/azoth/imessage.h
>
36
37
namespace
LC
38
{
39
namespace
Azoth
40
{
41
namespace
AzothUtil
42
{
43
namespace
detail
44
{
45
inline
IMessage*
GetIMessage
(IMessage *msg)
46
{
47
return
msg;
48
}
49
50
template
<
typename
T>
51
IMessage*
GetIMessage
(T *msgObj)
52
{
53
return
qobject_cast<IMessage*> (msgObj);
54
}
55
}
56
79
template
<
typename
T>
80
void
StandardPurgeMessages
(
QList<T*>
& messages,
const
QDateTime& before)
81
{
82
if
(!before.isValid ())
83
{
84
qDeleteAll (messages);
85
messages.clear ();
86
return
;
87
}
88
89
while
(!messages.isEmpty ())
90
{
91
const
auto
msg =
detail::GetIMessage
(messages.at (0));
92
if
(!msg)
93
{
94
qWarning () << Q_FUNC_INFO
95
<<
"unable to cast"
96
<< messages.at (0)
97
<<
"to IMessage; just blindly removing it and hoping for the best"
;
98
messages.removeAt (0);
99
continue
;
100
}
101
if
(msg->GetDateTime () < before)
102
delete
messages.takeAt (0);
103
else
104
break
;
105
}
106
}
107
}
108
}
109
}
QList
Definition:
iaccountactionsprovider.h:37
LC::Azoth::AzothUtil::detail::GetIMessage
IMessage * GetIMessage(IMessage *msg)
Definition:
azothutil.h:153
LC::Azoth::AzothUtil::StandardPurgeMessages
void StandardPurgeMessages(QList< T * > &messages, const QDateTime &before)
Standard function to purge messages before the given date.
Definition:
azothutil.h:161
LC
Definition:
activityinfo.h:35
imessage.h
src
plugins
azoth
interfaces
azoth
azothutil.h
Generated by
1.8.18