helper.h 3.72 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
  Copyright (C) 2005 Reinhold Kainhofer <reinhold@kainhofer.com>

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 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 General Public License for more details.

  You should have received a copy of the GNU General Public License along
  with this program; if not, write to the Free Software Foundation, Inc.,
  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

  As a special exception, permission is given to link this program
  with any edition of Qt, and distribute the resulting executable,
  without including the source code for Qt in the source distribution.
*/
#ifndef EVENTVIEWS_HELPER_H
#define EVENTVIEWS_HELPER_H

25
26
#include "eventviews_export.h"

27
28
29
#include <QColor>
#include <QSharedPointer>

Laurent Montel's avatar
Laurent Montel committed
30
namespace Akonadi {
31
32
33
34
35
36
37
38
39
class Collection;
class Item;
}

class QPixmap;
class QDate;

// Provides static methods that are useful to all views.

Laurent Montel's avatar
Laurent Montel committed
40
namespace EventViews {
41
42
43
44
45
46
class Prefs;
typedef QSharedPointer<Prefs> PrefsPtr;

/**
 Returns a nice QColor for text, give the input color &c.
*/
Laurent Montel's avatar
Laurent Montel committed
47
Q_REQUIRED_RESULT QColor getTextColor(const QColor &c);
48

49
50
51
52
53
54
55
56
57
/**
 * Determines if the @p color is "dark" or "light" by looking at its luminance.
 * idea taken from:
 * https://stackoverflow.com/questions/9780632/how-do-i-determine-if-a-color-is-closer-to-white-or-black
 *
 * @return true if the specified color is closer to black than white.
 */
Q_REQUIRED_RESULT bool isColorDark(const QColor &color);

58
59
/**
  This method returns the proper resource / subresource color for the view.
60
61
62
  If a value is stored in the preferences, we use it, else we try to find a
  CollectionColorAttribute in the collection. If everything else fails, a
  random color can be set.
Allen Winter's avatar
Allen Winter committed
63
  It is preferred to use this function instead of the
64
  EventViews::Prefs::resourceColor function.
65
66
67
68
69
70
  @return The resource color for the incidence. If the incidence belongs
  to a subresource, the color for the subresource is returned (if set).
  @param calendar the calendar for which the resource color should be obtained
  @param incidence the incidence for which the color is needed (to
                   determine which  subresource needs to be used)
*/
Laurent Montel's avatar
Laurent Montel committed
71
Q_REQUIRED_RESULT EVENTVIEWS_EXPORT QColor resourceColor(const Akonadi::Item &incidence, const PrefsPtr &preferences);
72

Laurent Montel's avatar
Laurent Montel committed
73
Q_REQUIRED_RESULT EVENTVIEWS_EXPORT QColor resourceColor(const Akonadi::Collection &collection, const PrefsPtr &preferences);
74

75
76
/**
  This method sets the resource color in the preferences, only if it is
Allen Winter's avatar
Allen Winter committed
77
  different from the CollectionColorAttribute. It is preferred to use this
78
79
80
81
82
  instead of the EventViews::Prefs::setResourceColor function.
  @param collection the collection for which the resource color should be stored
  @param color the color to stored
  @param preferences a pointer to the EventViews::Prefs to use
*/
Laurent Montel's avatar
Laurent Montel committed
83
EVENTVIEWS_EXPORT void setResourceColor(const Akonadi::Collection &collection, const QColor &color, const PrefsPtr &preferences);
84

85
86
87
88
/**
  Returns the number of years between the @p start QDate and the @p end QDate
  (i.e. the difference in the year number of both dates)
*/
Laurent Montel's avatar
Laurent Montel committed
89
Q_REQUIRED_RESULT int yearDiff(const QDate &start, const QDate &end);
90
91
92
93
94
95
96
97

/**
   Equivalent to SmallIcon( name ), but uses QPixmapCache.
   KIconLoader already uses a cache, but it's 20x slower on my tests.

   @return A new pixmap if it isn't yet in cache, otherwise returns the
           cached one.
*/
Laurent Montel's avatar
Laurent Montel committed
98
Q_REQUIRED_RESULT QPixmap cachedSmallIcon(const QString &name);
99
100
101
}

#endif