author | hash <hash> | 2002-11-27 09:53:25 (UTC) |
---|---|---|
committer | hash <hash> | 2002-11-27 09:53:25 (UTC) |
commit | 796b942cc070da91982689eb6e50b1e1e776c5ed (patch) (unidiff) | |
tree | e0c1733ca8f5fa9721af101f3db689c5cf0392dd | |
parent | e52158d2f9e1fdc9766d991dc672729648d5a020 (diff) | |
download | opie-796b942cc070da91982689eb6e50b1e1e776c5ed.zip opie-796b942cc070da91982689eb6e50b1e1e776c5ed.tar.gz opie-796b942cc070da91982689eb6e50b1e1e776c5ed.tar.bz2 |
now saving profiles works! yay!
-rw-r--r-- | inputmethods/handwriting/qimpensetup.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/inputmethods/handwriting/qimpensetup.cpp b/inputmethods/handwriting/qimpensetup.cpp index 10c136d..2441102 100644 --- a/inputmethods/handwriting/qimpensetup.cpp +++ b/inputmethods/handwriting/qimpensetup.cpp | |||
@@ -48,148 +48,155 @@ static const char * const left_xpm[] = { | |||
48 | " ", | 48 | " ", |
49 | " . ", | 49 | " . ", |
50 | " .. ", | 50 | " .. ", |
51 | " ... ", | 51 | " ... ", |
52 | " .... ", | 52 | " .... ", |
53 | " ..... ", | 53 | " ..... ", |
54 | " ...... ", | 54 | " ...... ", |
55 | " ..... ", | 55 | " ..... ", |
56 | " .... ", | 56 | " .... ", |
57 | " ... ", | 57 | " ... ", |
58 | " .. ", | 58 | " .. ", |
59 | " . ", | 59 | " . ", |
60 | " ", | 60 | " ", |
61 | " "}; | 61 | " "}; |
62 | 62 | ||
63 | 63 | ||
64 | /* XPM */ | 64 | /* XPM */ |
65 | static const char * const right_xpm[] = { | 65 | static const char * const right_xpm[] = { |
66 | "16 16 2 1", | 66 | "16 16 2 1", |
67 | " c None", | 67 | " c None", |
68 | ".c #000000", | 68 | ".c #000000", |
69 | " ", | 69 | " ", |
70 | " ", | 70 | " ", |
71 | " ", | 71 | " ", |
72 | " . ", | 72 | " . ", |
73 | " .. ", | 73 | " .. ", |
74 | " ... ", | 74 | " ... ", |
75 | " .... ", | 75 | " .... ", |
76 | " ..... ", | 76 | " ..... ", |
77 | " ...... ", | 77 | " ...... ", |
78 | " ..... ", | 78 | " ..... ", |
79 | " .... ", | 79 | " .... ", |
80 | " ... ", | 80 | " ... ", |
81 | " .. ", | 81 | " .. ", |
82 | " . ", | 82 | " . ", |
83 | " ", | 83 | " ", |
84 | " "}; | 84 | " "}; |
85 | 85 | ||
86 | 86 | ||
87 | 87 | ||
88 | QIMPenSetup::QIMPenSetup( QIMPenProfile *p, QWidget *parent, | 88 | QIMPenSetup::QIMPenSetup( QIMPenProfile *p, QWidget *parent, |
89 | const char *name, bool modal, int WFlags ) | 89 | const char *name, bool modal, int WFlags ) |
90 | : QDialog( parent, name, modal, WFlags ), profileCombo(0), profile(p) | 90 | : QDialog( parent, name, modal, WFlags ), profileCombo(0), profile(p) |
91 | { | 91 | { |
92 | setCaption( tr("Setup Handwriting Input") ); | 92 | setCaption( tr("Setup Handwriting Input") ); |
93 | 93 | ||
94 | QVBoxLayout *vb = new QVBoxLayout( this ); | 94 | QVBoxLayout *vb = new QVBoxLayout( this ); |
95 | 95 | ||
96 | #if 0 | 96 | #define MULTIPROFILE |
97 | #ifdef MULTIPROFILE | ||
97 | profileList.setAutoDelete( true ); | 98 | profileList.setAutoDelete( true ); |
98 | QHBoxLayout *hb = new QHBoxLayout( vb ); | 99 | QHBoxLayout *hb = new QHBoxLayout( vb ); |
99 | hb->setMargin( 6 ); | 100 | hb->setMargin( 6 ); |
100 | QLabel *l = new QLabel( tr("Character Profile:"), this ); | 101 | QLabel *l = new QLabel( tr("Character Profile:"), this ); |
101 | hb->addWidget( l ); | 102 | hb->addWidget( l ); |
102 | profileCombo = new QComboBox( this ); | 103 | profileCombo = new QComboBox( this ); |
103 | connect( profileCombo, SIGNAL(activated(const QString &)), | 104 | connect( profileCombo, SIGNAL(activated(const QString &)), |
104 | this, SLOT(selectProfile(const QString &)) ); | 105 | this, SLOT(selectProfile(const QString &)) ); |
105 | hb->addWidget( profileCombo ); | 106 | hb->addWidget( profileCombo ); |
106 | loadProfiles(); | ||
107 | #else | 107 | #else |
108 | profileList.append( profile ); | 108 | profileList.append( profile ); |
109 | #endif | 109 | #endif |
110 | |||
111 | qWarning("profiles: %d", profileList.count()); | ||
110 | 112 | ||
111 | QTabWidget *tw = new QTabWidget( this ); | 113 | QTabWidget *tw = new QTabWidget( this ); |
112 | vb->addWidget( tw ); | 114 | vb->addWidget( tw ); |
113 | 115 | ||
114 | pref = new QIMPenPrefBase( this ); | 116 | pref = new QIMPenPrefBase( this ); |
115 | tw->addTab( pref, tr("Preferences") ); | 117 | tw->addTab( pref, tr("Preferences") ); |
116 | 118 | ||
117 | pref->inputStyle->setExclusive( TRUE ); | 119 | pref->inputStyle->setExclusive( TRUE ); |
118 | 120 | ||
119 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; | 121 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; |
120 | pref->inputStyle->setButton( style ); | 122 | pref->inputStyle->setButton( style ); |
121 | connect( pref->inputStyle, SIGNAL(clicked(int)), | 123 | connect( pref->inputStyle, SIGNAL(clicked(int)), |
122 | this, SLOT(styleClicked(int)) ); | 124 | this, SLOT(styleClicked(int)) ); |
123 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); | 125 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); |
124 | 126 | ||
125 | multiTimeout = profile->multiStrokeTimeout(); | 127 | multiTimeout = profile->multiStrokeTimeout(); |
126 | pref->multiStrokeSlider->setValue( multiTimeout ); | 128 | pref->multiStrokeSlider->setValue( multiTimeout ); |
127 | multiTimeoutChanged( multiTimeout ); | 129 | multiTimeoutChanged( multiTimeout ); |
128 | connect( pref->multiStrokeSlider, SIGNAL(valueChanged(int)), | 130 | connect( pref->multiStrokeSlider, SIGNAL(valueChanged(int)), |
129 | this, SLOT(multiTimeoutChanged(int)) ); | 131 | this, SLOT(multiTimeoutChanged(int)) ); |
130 | 132 | ||
131 | edit = new QIMPenEdit( p, tw ); | 133 | edit = new QIMPenEdit( p, tw ); |
132 | tw->addTab( edit, tr("Customize") ); | 134 | tw->addTab( edit, tr("Customize") ); |
135 | #ifdef MULTIPROFILE | ||
136 | loadProfiles(); | ||
137 | #endif | ||
138 | |||
133 | } | 139 | } |
134 | 140 | ||
135 | void QIMPenSetup::loadProfiles() | 141 | void QIMPenSetup::loadProfiles() |
136 | { | 142 | { |
137 | QString path = QPEApplication::qpeDir() + "etc/qimpen"; | 143 | QString path = QPEApplication::qpeDir() + "etc/qimpen"; |
138 | QDir dir( path, "*.conf" ); | 144 | QDir dir( path, "*.conf" ); |
139 | QStringList list = dir.entryList(); | 145 | QStringList list = dir.entryList(); |
140 | QStringList::Iterator it; | 146 | QStringList::Iterator it; |
141 | for ( it = list.begin(); it != list.end(); ++it ) { | 147 | for ( it = list.begin(); it != list.end(); ++it ) { |
142 | QIMPenProfile *p = new QIMPenProfile( path + "/" + *it ); | 148 | QIMPenProfile *p = new QIMPenProfile( path + "/" + *it ); |
143 | profileList.append( p ); | 149 | profileList.append( p ); |
144 | profileCombo->insertItem( p->name() ); | 150 | profileCombo->insertItem( p->name() ); |
145 | if ( p->name() == profile->name() ) { | 151 | if ( p->name() == profile->name() ) { |
146 | profileCombo->setCurrentItem( profileCombo->count()-1 ); | 152 | profileCombo->setCurrentItem( profileCombo->count()-1 ); |
147 | profile = p; | 153 | profile = p; |
154 | edit->setProfile( profile ); | ||
148 | } | 155 | } |
149 | } | 156 | } |
150 | } | 157 | } |
151 | 158 | ||
152 | void QIMPenSetup::styleClicked( int id ) | 159 | void QIMPenSetup::styleClicked( int id ) |
153 | { | 160 | { |
154 | style = id; | 161 | style = id; |
155 | } | 162 | } |
156 | 163 | ||
157 | void QIMPenSetup::multiTimeoutChanged( int v ) | 164 | void QIMPenSetup::multiTimeoutChanged( int v ) |
158 | { | 165 | { |
159 | multiTimeout = v; | 166 | multiTimeout = v; |
160 | pref->multiStrokeLabel->setText( tr("%1 ms").arg(v) ); | 167 | pref->multiStrokeLabel->setText( tr("%1 ms").arg(v) ); |
161 | } | 168 | } |
162 | 169 | ||
163 | void QIMPenSetup::selectProfile( const QString &p ) | 170 | void QIMPenSetup::selectProfile( const QString &p ) |
164 | { | 171 | { |
165 | if ( p == profile->name() ) | 172 | if ( p == profile->name() ) |
166 | return; | 173 | return; |
167 | 174 | ||
168 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); | 175 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); |
169 | profile->setMultiStrokeTimeout( multiTimeout ); | 176 | profile->setMultiStrokeTimeout( multiTimeout ); |
170 | 177 | ||
171 | for ( int i = 0; i < (int)profileList.count(); i++ ) { | 178 | for ( int i = 0; i < (int)profileList.count(); i++ ) { |
172 | if ( profileList.at(i)->name() == p ) { | 179 | if ( profileList.at(i)->name() == p ) { |
173 | profile = profileList.at(i); | 180 | profile = profileList.at(i); |
174 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; | 181 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; |
175 | pref->inputStyle->setButton( style ); | 182 | pref->inputStyle->setButton( style ); |
176 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); | 183 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); |
177 | multiTimeout = profile->multiStrokeTimeout(); | 184 | multiTimeout = profile->multiStrokeTimeout(); |
178 | pref->multiStrokeSlider->setValue( multiTimeout ); | 185 | pref->multiStrokeSlider->setValue( multiTimeout ); |
179 | multiTimeoutChanged( multiTimeout ); | 186 | multiTimeoutChanged( multiTimeout ); |
180 | edit->setProfile( profile ); | 187 | edit->setProfile( profile ); |
181 | break; | 188 | break; |
182 | } | 189 | } |
183 | } | 190 | } |
184 | } | 191 | } |
185 | 192 | ||
186 | void QIMPenSetup::accept() | 193 | void QIMPenSetup::accept() |
187 | { | 194 | { |
188 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); | 195 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); |
189 | profile->setMultiStrokeTimeout( multiTimeout ); | 196 | profile->setMultiStrokeTimeout( multiTimeout ); |
190 | // Save current profile | 197 | // Save current profile |
191 | if ( profileCombo ) { | 198 | if ( profileCombo ) { |
192 | Config config( "handwriting" ); | 199 | Config config( "handwriting" ); |
193 | config.setGroup( "Settings" ); | 200 | config.setGroup( "Settings" ); |
194 | config.writeEntry( "Profile", profileCombo->currentText() ); | 201 | config.writeEntry( "Profile", profileCombo->currentText() ); |
195 | } | 202 | } |
@@ -518,96 +525,97 @@ void QIMPenEdit::nextChar() | |||
518 | } | 525 | } |
519 | 526 | ||
520 | void QIMPenEdit::clearChar() | 527 | void QIMPenEdit::clearChar() |
521 | { | 528 | { |
522 | inputChar->clear(); | 529 | inputChar->clear(); |
523 | pw->clear(); | 530 | pw->clear(); |
524 | enableButtons(); | 531 | enableButtons(); |
525 | } | 532 | } |
526 | 533 | ||
527 | void QIMPenEdit::selectChar( int i ) | 534 | void QIMPenEdit::selectChar( int i ) |
528 | { | 535 | { |
529 | currentChar = 0; | 536 | currentChar = 0; |
530 | currentCode = ((CharListItem *)charList->item(i))->code(); | 537 | currentCode = ((CharListItem *)charList->item(i))->code(); |
531 | QIMPenCharIterator it(currentSet->characters() ); | 538 | QIMPenCharIterator it(currentSet->characters() ); |
532 | for ( ; it.current(); ++it ) { | 539 | for ( ; it.current(); ++it ) { |
533 | if ( it.current()->character() == currentCode && | 540 | if ( it.current()->character() == currentCode && |
534 | !it.current()->testFlag( QIMPenChar::Deleted ) ) { | 541 | !it.current()->testFlag( QIMPenChar::Deleted ) ) { |
535 | setCurrentChar( it.current() ); | 542 | setCurrentChar( it.current() ); |
536 | break; | 543 | break; |
537 | } | 544 | } |
538 | } | 545 | } |
539 | if ( !it.current() ) | 546 | if ( !it.current() ) |
540 | setCurrentChar( 0 ); | 547 | setCurrentChar( 0 ); |
541 | inputChar->clear(); | 548 | inputChar->clear(); |
542 | } | 549 | } |
543 | 550 | ||
544 | void QIMPenEdit::selectCharSet( int i ) | 551 | void QIMPenEdit::selectCharSet( int i ) |
545 | { | 552 | { |
546 | if ( currentSet ) | 553 | if ( currentSet ) |
547 | pw->removeCharSet( 0 ); | 554 | pw->removeCharSet( 0 ); |
548 | currentSet = profile->charSets().at( i ); | 555 | currentSet = profile->charSets().at( i ); |
549 | fillCharList(); | 556 | fillCharList(); |
550 | pw->insertCharSet( currentSet ); | 557 | pw->insertCharSet( currentSet ); |
551 | inputChar->clear(); | 558 | inputChar->clear(); |
552 | if ( charList->count() ) { | 559 | if ( charList->count() ) { |
553 | charList->setSelected( 0, TRUE ); | 560 | charList->setSelected( 0, TRUE ); |
554 | selectChar(0); | 561 | selectChar(0); |
555 | } | 562 | } |
556 | } | 563 | } |
557 | 564 | ||
558 | void QIMPenEdit::addChar() | 565 | void QIMPenEdit::addChar() |
559 | { | 566 | { |
560 | if ( !inputChar->isEmpty() ) { | 567 | if ( !inputChar->isEmpty() ) { |
561 | QIMPenChar *pc = new QIMPenChar( *inputChar ); | 568 | QIMPenChar *pc = new QIMPenChar( *inputChar ); |
562 | pc->setCharacter( currentCode ); | 569 | pc->setCharacter( currentCode ); |
563 | 570 | ||
564 | // User characters override all matching system characters. | 571 | // User characters override all matching system characters. |
565 | // Copy and mark deleted identical system characters. | 572 | // Copy and mark deleted identical system characters. |
573 | |||
566 | QIMPenCharIterator it(currentSet->characters() ); | 574 | QIMPenCharIterator it(currentSet->characters() ); |
567 | QIMPenChar *sc = 0; | 575 | QIMPenChar *sc = 0; |
568 | while ( (sc = it.current()) != 0 ) { | 576 | while ( (sc = it.current()) != 0 ) { |
569 | ++it; | 577 | ++it; |
570 | if ( sc->character() == currentCode && | 578 | if ( sc->character() == currentCode && |
571 | sc->testFlag( QIMPenChar::System ) && | 579 | sc->testFlag( QIMPenChar::System ) && |
572 | !sc->testFlag( QIMPenChar::Deleted ) ) { | 580 | !sc->testFlag( QIMPenChar::Deleted ) ) { |
573 | QIMPenChar *cc = new QIMPenChar( *sc ); | 581 | QIMPenChar *cc = new QIMPenChar( *sc ); |
574 | cc->clearFlag( QIMPenChar::System ); | 582 | cc->clearFlag( QIMPenChar::System ); |
575 | currentSet->addChar( cc ); | 583 | currentSet->addChar( cc ); |
576 | sc->setFlag( QIMPenChar::Deleted ); | 584 | sc->setFlag( QIMPenChar::Deleted ); |
577 | } | 585 | } |
578 | } | 586 | } |
579 | 587 | ||
580 | currentSet->addChar( pc ); | 588 | currentSet->addChar( pc ); |
581 | setCurrentChar( pc ); | 589 | setCurrentChar( pc ); |
582 | inputChar->clear(); | 590 | inputChar->clear(); |
583 | } | 591 | } |
584 | } | 592 | } |
585 | 593 | ||
586 | void QIMPenEdit::addNewChar() | 594 | void QIMPenEdit::addNewChar() |
587 | { | 595 | { |
588 | if ( !inputChar->isEmpty() ) { | 596 | if ( !inputChar->isEmpty() ) { |
589 | QIMPenInputCharDlg dlg( 0, 0, TRUE ); | 597 | QIMPenInputCharDlg dlg( 0, 0, TRUE ); |
590 | if ( dlg.exec() ) { | 598 | if ( dlg.exec() ) { |
591 | currentCode = dlg.unicode(); | 599 | currentCode = dlg.unicode(); |
592 | addChar(); | 600 | addChar(); |
593 | fillCharList(); | 601 | fillCharList(); |
594 | for ( unsigned int i = 0; i < charList->count(); i++ ) { | 602 | for ( unsigned int i = 0; i < charList->count(); i++ ) { |
595 | CharListItem *li = (CharListItem *)charList->item(i); | 603 | CharListItem *li = (CharListItem *)charList->item(i); |
596 | if ( li->code() == dlg.unicode() ) { | 604 | if ( li->code() == dlg.unicode() ) { |
597 | charList->setSelected( i, TRUE ); | 605 | charList->setSelected( i, TRUE ); |
598 | break; | 606 | break; |
599 | } | 607 | } |
600 | } | 608 | } |
601 | } | 609 | } |
602 | } | 610 | } |
603 | } | 611 | } |
604 | 612 | ||
605 | void QIMPenEdit::removeChar() | 613 | void QIMPenEdit::removeChar() |
606 | { | 614 | { |
607 | if ( currentChar ) { | 615 | if ( currentChar ) { |
608 | QIMPenChar *pc = findPrev(); | 616 | QIMPenChar *pc = findPrev(); |
609 | if ( !pc ) pc = findNext(); | 617 | if ( !pc ) pc = findNext(); |
610 | if ( currentChar->testFlag( QIMPenChar::System ) ) | 618 | if ( currentChar->testFlag( QIMPenChar::System ) ) |
611 | currentChar->setFlag( QIMPenChar::Deleted ); | 619 | currentChar->setFlag( QIMPenChar::Deleted ); |
612 | else | 620 | else |
613 | currentSet->removeChar( currentChar ); | 621 | currentSet->removeChar( currentChar ); |