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

« back to all changes in this revision

Viewing changes to qt4/immodule/candidatewindow.h

  • Committer: Bazaar Package Importer
  • Author(s): Masahito Omote
  • Date: 2008-06-25 19:56:33 UTC
  • mfrom: (3.1.18 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080625195633-8jljph4rfq00l8o7
Tags: 1:1.5.1-2
* uim-tcode: provide tutcode-custom.scm, tutcode-bushudic.scm
  and tutcode-rule.scm (Closes: #482659)
* Fix FTBFS: segv during compile (Closes: #483078).
  I personally think this bug is not specific for uim but is a optimization
  problem on gcc-4.3.1. (https://bugs.freedesktop.org/show_bug.cgi?id=16477)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 
 
3
Copyright (c) 2003-2008 uim Project http://code.google.com/p/uim/
 
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 UIM_QT4_IMMODULE_CANDIDATE_WINDOW_H
 
34
#define UIM_QT4_IMMODULE_CANDIDATE_WINDOW_H
 
35
 
 
36
#include <uim/uim.h>
 
37
 
 
38
#include <Q3VBox>
 
39
#include <Q3ListView>
 
40
#include <Q3ValueList>
 
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 Q3VBox
 
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 Q3ValueList<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( Q3ListViewItem* );
 
79
    void slotHookSubwindow( Q3ListViewItem* );
 
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
    Q3ValueList<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 Q3ListView
 
107
{
 
108
    Q_OBJECT
 
109
 
 
110
public:
 
111
    CandidateListView( QWidget *parent, const char *name = 0, Qt::WFlags f = 0 ) : Q3ListView( parent, name, f ) {}
 
112
    ~CandidateListView() {}
 
113
 
 
114
    int itemIndex( const Q3ListViewItem *item ) const
 
115
    {
 
116
        if ( !item )
 
117
            return -1;
 
118
        if ( item == firstChild() )
 
119
            return 0;
 
120
        else
 
121
        {
 
122
            Q3ListViewItemIterator 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
    Q3ListViewItem* itemAtIndex( int index ) const
 
133
    {
 
134
        if ( index < 0 )
 
135
            return 0;
 
136
        int j = 0;
 
137
        for ( Q3ListViewItemIterator 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: UIM_QT4_IMMODULE_CANDIDATE_WINDOW_H */