~ubuntu-branches/ubuntu/gutsy/kdebase-workspace/gutsy

« back to all changes in this revision

Viewing changes to kicker/extensions/kasbar/kasclockitem.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2007-09-05 20:45:14 UTC
  • Revision ID: james.westby@ubuntu.com-20070905204514-632hhspl0nvrc84i
Tags: upstream-3.93.0
ImportĀ upstreamĀ versionĀ 3.93.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <QPainter>
 
2
#include <QBitmap>
 
3
#include <QDateTime>
 
4
#include <QtGui/qdrawutil.h>
 
5
#include <QtGui/QLCDNumber>
 
6
#include <QTimer>
 
7
//Added by qt3to4:
 
8
#include <QMouseEvent>
 
9
#include <QFrame>
 
10
 
 
11
#include <kdatepicker.h>
 
12
#include <kglobal.h>
 
13
#include <kwindowsystem.h>
 
14
#include <kiconloader.h>
 
15
#include <QPixmap>
 
16
#include <kpixmapeffect.h>
 
17
#include <klocale.h>
 
18
#include <kstandarddirs.h>
 
19
#include <kmenu.h>
 
20
 
 
21
#include <taskmanager.h>
 
22
 
 
23
#include "kaspopup.h"
 
24
#include "kastasker.h"
 
25
 
 
26
#include "kasclockitem.h"
 
27
#include "kasclockitem.moc"
 
28
 
 
29
class LCD : public QLCDNumber
 
30
{
 
31
public:
 
32
    LCD( QWidget *parent, const char *name=0 )
 
33
        : QLCDNumber(parent,name) {}
 
34
    ~LCD() {}
 
35
 
 
36
    void draw( QPainter *p ) { drawContents(p); }
 
37
};
 
38
 
 
39
KasClockItem::KasClockItem( KasBar *parent )
 
40
    : KasItem( parent )
 
41
{
 
42
    setCustomPopup( true );
 
43
 
 
44
    QTimer *t = new QTimer( this );
 
45
    connect( t, SIGNAL( timeout() ), SLOT( updateTime() ) );
 
46
    t->start( 1000 );
 
47
 
 
48
    lcd = new LCD( parent );
 
49
    lcd->hide();
 
50
 
 
51
    lcd->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
 
52
    lcd->setBackgroundMode( Qt::NoBackground );
 
53
    lcd->setFrameStyle( QFrame::NoFrame );
 
54
    lcd->setSegmentStyle( QLCDNumber::Flat );
 
55
    lcd->setNumDigits( 5 );
 
56
    lcd->setAutoMask( true );
 
57
    updateTime();
 
58
 
 
59
    connect( this, SIGNAL(leftButtonClicked(QMouseEvent *)), SLOT(togglePopup()) );
 
60
    connect( this, SIGNAL(rightButtonClicked(QMouseEvent *)), SLOT(showMenuAt(QMouseEvent *) ) );
 
61
}
 
62
 
 
63
KasClockItem::~KasClockItem()
 
64
{
 
65
    delete lcd;
 
66
}
 
67
 
 
68
KasPopup *KasClockItem::createPopup()
 
69
{
 
70
    KasPopup *pop = new KasPopup( this );
 
71
    setPopup( pop );
 
72
 
 
73
    (void) new KDatePicker( pop );
 
74
    pop->adjustSize();
 
75
 
 
76
    return pop;
 
77
}
 
78
 
 
79
void KasClockItem::updateTime()
 
80
{
 
81
    setText( KGlobal::locale()->formatDate( QDate::currentDate(), KLocale::ShortDate ) );
 
82
    lcd->display( KGlobal::locale()->formatTime( QTime::currentTime(), false /* includeSecs */, false /* isDuration */) );
 
83
    
 
84
    update();
 
85
}
 
86
 
 
87
void KasClockItem::paint( QPainter *p )
 
88
{
 
89
    KasItem::paint( p );
 
90
 
 
91
    lcd->setGeometry( QRect( 0, 0, extent(), extent()-15 ) );
 
92
 
 
93
    p->save();
 
94
    p->translate( 3, 15 );
 
95
    lcd->setPaletteForegroundColor( kasbar()->colorGroup().mid() );
 
96
    lcd->draw( p );
 
97
    p->restore();
 
98
 
 
99
    p->save();
 
100
    p->translate( 1, 13 );
 
101
    lcd->setPaletteForegroundColor( resources()->activePenColor() );
 
102
    lcd->draw( p );
 
103
    p->restore();
 
104
}
 
105
 
 
106
void KasClockItem::showMenuAt( QMouseEvent *ev )
 
107
{
 
108
    hidePopup();
 
109
    showMenuAt( ev->globalPos() );
 
110
}
 
111
 
 
112
void KasClockItem::showMenuAt( QPoint p )
 
113
{
 
114
    mouseLeave();
 
115
    kasbar()->updateMouseOver();
 
116
 
 
117
    KasTasker *bar = dynamic_cast<KasTasker *> (KasItem::kasbar());
 
118
    if ( !bar )
 
119
        return;
 
120
 
 
121
    KMenu *menu = bar->contextMenu();
 
122
    menu->exec( p );
 
123
}