~ubuntu-branches/ubuntu/maverick/uim/maverick

« back to all changes in this revision

Viewing changes to qt/immodule-candidatewindow.h

  • Committer: Bazaar Package Importer
  • Author(s): Masahito Omote
  • Date: 2006-11-23 15:10:53 UTC
  • mfrom: (3.1.8 edgy)
  • Revision ID: james.westby@ubuntu.com-20061123151053-q42sk1lvks41xpfx
Tags: 1:1.2.1-9
uim-gtk2.0.postinst: Don't call update-gtk-immodules on purge.
(closes: Bug#398530)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 
 
3
Copyright (c) 2003-2006 uim Project http://uim.freedesktop.org/
 
4
 
 
5
All rights reserved.
 
6
 
 
7
Redistribution and use in source and binary forms, with or without
 
8
modification, are permitted provided that the following conditions
 
9
are met:
 
10
 
 
11
1. Redistributions of source code must retain the above copyright
 
12
notice, this list of conditions and the following disclaimer.
 
13
2. Redistributions in binary form must reproduce the above copyright
 
14
notice, this list of conditions and the following disclaimer in the
 
15
documentation and/or other materials provided with the distribution.
 
16
3. Neither the name of authors nor the names of its contributors
 
17
may be used to endorse or promote products derived from this software
 
18
without specific prior written permission.
 
19
 
 
20
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
 
21
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
22
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
23
ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
 
24
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
25
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
26
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
27
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
28
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
29
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
30
SUCH DAMAGE.
 
31
 
 
32
*/
 
33
#ifndef _CANDIDATE_WINDOW_H_
 
34
#define _CANDIDATE_WINDOW_H_
 
35
 
 
36
#include <uim/uim.h>
 
37
 
 
38
#include <qvbox.h>
 
39
#include <qlistview.h>
 
40
#include <qvaluelist.h>
 
41
#include <qevent.h>
 
42
#include <qfontmetrics.h>
 
43
 
 
44
class QLabel;
 
45
 
 
46
class QUimInputContext;
 
47
class CandidateListView;
 
48
class SubWindow;
 
49
 
 
50
class CandidateWindow : public QVBox
 
51
{
 
52
    Q_OBJECT
 
53
 
 
54
public:
 
55
    CandidateWindow( QWidget *parent, const char * name = 0 );
 
56
    ~CandidateWindow();
 
57
 
 
58
    void activateCandwin( int dLimit );
 
59
    void deactivateCandwin();
 
60
    void clearCandidates();
 
61
    void popup();
 
62
 
 
63
    void setAlwaysLeftPosition( bool left ) { isAlwaysLeft = left; }
 
64
    bool isAlwaysLeftPosition() const { return isAlwaysLeft; }
 
65
 
 
66
    void setCandidates( int displayLimit, const QValueList<uim_candidate> &candidates );
 
67
    void setPage( int page );
 
68
    void shiftPage( bool forward );
 
69
    void layoutWindow( int x, int y, int w, int h );
 
70
    void setIndex( int totalindex );
 
71
    void setIndexInPage( int index );
 
72
 
 
73
    void setQUimInputContext( QUimInputContext* m_ic ) { ic = m_ic; }
 
74
 
 
75
    QSize sizeHint(void) const;
 
76
 
 
77
protected slots:
 
78
    void slotCandidateSelected( QListViewItem* );
 
79
    void slotHookSubwindow( QListViewItem* );
 
80
 
 
81
protected:
 
82
    void updateLabel();
 
83
 
 
84
    // Moving and Resizing affects the positon of Subwindow
 
85
    virtual void moveEvent( QMoveEvent * );
 
86
    virtual void resizeEvent( QResizeEvent * );
 
87
 
 
88
    QUimInputContext *ic;
 
89
 
 
90
    CandidateListView *cList;
 
91
    QLabel *numLabel;
 
92
 
 
93
    QValueList<uim_candidate> stores;
 
94
 
 
95
    int nrCandidates;
 
96
    int candidateIndex;
 
97
    int displayLimit;
 
98
    int pageIndex;
 
99
 
 
100
    bool isAlwaysLeft;
 
101
 
 
102
    SubWindow *subWin;
 
103
};
 
104
 
 
105
 
 
106
class CandidateListView : public QListView
 
107
{
 
108
    Q_OBJECT
 
109
 
 
110
public:
 
111
    CandidateListView( QWidget *parent, const char *name = 0, WFlags f = 0 ) : QListView( parent, name, f ) {}
 
112
    ~CandidateListView() {}
 
113
 
 
114
    int itemIndex( const QListViewItem *item ) const
 
115
    {
 
116
        if ( !item )
 
117
            return -1;
 
118
        if ( item == firstChild() )
 
119
            return 0;
 
120
        else
 
121
        {
 
122
            QListViewItemIterator it( firstChild() );
 
123
            uint j = 0;
 
124
            for ( ; it.current() && it.current() != item; ++it, ++j )
 
125
                ;
 
126
            if ( !it.current() )
 
127
                return -1;
 
128
            return j;
 
129
        }
 
130
    }
 
131
 
 
132
    QListViewItem* itemAtIndex( int index ) const
 
133
    {
 
134
        if ( index < 0 )
 
135
            return 0;
 
136
        int j = 0;
 
137
        for ( QListViewItemIterator it = firstChild(); it.current(); ++it )
 
138
        {
 
139
            if ( j == index )
 
140
                return it.current();
 
141
            j++;
 
142
        }
 
143
 
 
144
        return 0;
 
145
    }
 
146
 
 
147
    QSize sizeHint( void ) const;
 
148
};
 
149
#endif /* Not def: _CANDIDATE_WINDOW_H_ */