1 #include <qmessagebox.h>
2 #include <kiconloader.h>
3 #include "kfetoplevel.h"
4 #include "composewidget.h"
5
6
7
KkfeTopLevel()8 KkfeTopLevel::KkfeTopLevel()
9 : KTMainWindow()
10 {
11 readConfig();
12 smapi = new Ksmapi(2); // *** make the def_zone configurable
13
14 setupMenuBar();
15 setupStatusBar();
16 setupToolBar();
17
18 attrbar = new attribBar(this, new msgattributes());
19 addToolBar(attrbar);
20 attrbar->setBarPos(KToolBar::Left);
21
22 // setMinimumSize(500, 350);
23 resize(widgetwidth, widgetheight);
24
25 // *** make use of layout later
26 hPanner = new KNewPanner(this, "HoizontalPanner", KNewPanner::Horizontal, KNewPanner::Absolute);
27 hPanner->resize(widgetwidth, widgetheight);
28 setView(hPanner);
29
30 vPanner = new KNewPanner(hPanner, "VerticalPanner", KNewPanner::Vertical);
31
32 aList = new areaListWidget(vPanner, smapi);
33 connect(aList, SIGNAL(selected(int, int)), this, SLOT(cmAreaListSelected(int, int)));
34
35 mList = new msgListWidget(hPanner, smapi); // *** check below, use newSelection
36 connect(mList, SIGNAL(selected(int, int)), this, SLOT(cmMsgListSelected(int, int)));
37
38 msg = new msgWidget(vPanner, smapi);
39
40 hPanner->activate(mList, vPanner);
41 vPanner->activate(aList, msg);
42
43 hPanner->setAbsSeperatorPos(hpannerseperatorpos);
44 vPanner->setAbsSeperatorPos(vpannerseperatorpos);
45
46 debug("vor cmAreaRescanList()");
47 cmAreaRescanList();
48 debug("nach cmAreaRescanList()");
49 }
50
51
52
~KkfeTopLevel()53 KkfeTopLevel::~KkfeTopLevel()
54 {
55 delete msg;
56 delete aList;
57 delete mList;
58 delete smapi;
59
60 debug("KkfeTopLevel finished. Oki!");
61 }
62
63
64
setupMenuBar()65 void KkfeTopLevel::setupMenuBar()
66 {
67 // The Keyboard Accellerator, make this a seperate Method later
68 accel = new QAccel(this); // create accels for myWindow
69
70 menubar = new KMenuBar(this);
71 setMenu(menubar);
72
73 // File Menu
74 mFile = new QPopupMenu();
75
76 ID_FILE_NEWMSG = mFile->insertItem(i18n("&New Message..."));
77 mFile->connectItem(ID_FILE_NEWMSG, this, SLOT(cmFileNewMsg()));
78
79 ID_FILE_NEWREADER = mFile->insertItem(i18n("&New Reader..."));
80 mFile->connectItem(ID_FILE_NEWREADER, this, SLOT(cmFileNewReader()));
81
82 mFile->insertSeparator();
83
84 ID_FILE_SAVEAS = mFile->insertItem(i18n("&Save as..."));
85 mFile->connectItem(ID_FILE_SAVEAS, this, SLOT(cmFileSaveAs()));
86
87 ID_FILE_PRINT = mFile->insertItem(i18n("&Print"));
88 mFile->connectItem(ID_FILE_SAVEAS, this, SLOT(cmFilePrint()));
89
90 ID_FILE_PRINTERSETUP = mFile->insertItem(i18n("&Printer Setup..."));
91 mFile->connectItem(ID_FILE_PRINTERSETUP, this, SLOT(cmFilePrinterSetup()));
92
93 mFile->insertSeparator();
94
95 ID_FILE_QUIT = mFile->insertItem(i18n("&Quit"));
96 mFile->connectItem(ID_FILE_QUIT, this, SLOT(cmFileQuit()));
97
98 menubar->insertItem(i18n("&File"), mFile);
99
100 // Area Menu
101 mArea = new QPopupMenu();
102
103 ID_AREA_RESCAN = mArea->insertItem(i18n("&Rescan"));
104 mArea->connectItem(ID_AREA_RESCAN, this, SLOT(cmRescanAreaList()));
105
106 mArea->insertSeparator();
107
108 ID_AREA_FIRST = mArea->insertItem(i18n("&First\tALT-Home"));
109 mArea->connectItem(ID_AREA_FIRST, this, SLOT(cmAreaFirst()));
110 accel->connectItem(accel->insertItem(ALT + Key_Home),this,SLOT(cmAreaFirst()));
111
112 ID_AREA_PREV = mArea->insertItem(i18n("&Prev\tALT-Left"));
113 mArea->connectItem(ID_AREA_PREV, this, SLOT(cmAreaPrev()));
114 accel->connectItem(accel->insertItem(ALT + Key_Left),this,SLOT(cmAreaPrev()));
115
116 ID_AREA_NEXT = mArea->insertItem(i18n("&Next\tALT-Right"));
117 mArea->connectItem(ID_AREA_NEXT, this, SLOT(cmAreaNext()));
118 accel->connectItem(accel->insertItem(ALT + Key_Right),this,SLOT(cmAreaNext()));
119
120 ID_AREA_LAST = mArea->insertItem(i18n("&Last\tALT-End"));
121 mArea->connectItem(ID_AREA_LAST, this, SLOT(cmAreaLast()));
122 accel->connectItem(accel->insertItem(ALT + Key_End),this,SLOT(cmAreaLast()));
123
124 menubar->insertItem(i18n("&Area"), mArea);
125
126 // Message Menu
127 mMessage = new QPopupMenu;
128
129 ID_MESSAGE_REPLY = mMessage->insertItem(i18n("Reply\tALT-R"));
130 mMessage->connectItem(ID_MESSAGE_REPLY, this, SLOT(cmMessageReply()));
131 accel->connectItem(accel->insertItem(ALT + Key_R),this,SLOT(cmMessageReply()));
132
133 mMessage->insertSeparator();
134
135 ID_MESSAGE_FIRST = mMessage->insertItem(i18n("First\tCTRL-Home"));
136 mMessage->connectItem(ID_MESSAGE_FIRST, this, SLOT(cmMessageFirst()));
137 accel->connectItem(accel->insertItem(CTRL + Key_Home),this,SLOT(cmMessageFirst()));
138
139 ID_MESSAGE_PREV = mMessage->insertItem(i18n("Previous\tCTRL-Left"));
140 mMessage->connectItem(ID_MESSAGE_PREV, this, SLOT(cmMessagePrev()));
141 accel->connectItem(accel->insertItem(CTRL + Key_Left),this,SLOT(cmMessagePrev()));
142
143 ID_MESSAGE_NEXT = mMessage->insertItem(i18n("Next\tCTRL-Right"));
144 mMessage->connectItem(ID_MESSAGE_NEXT, this, SLOT(cmMessageNext()));
145 accel->connectItem(accel->insertItem(CTRL + Key_Right),this,SLOT(cmMessageNext()));
146
147 ID_MESSAGE_LAST = mMessage->insertItem(i18n("Last\tCTRL-End"));
148 mMessage->connectItem(ID_MESSAGE_LAST, this, SLOT(cmMessageLast()));
149 accel->connectItem(accel->insertItem(CTRL + Key_End),this,SLOT(cmMessageLast()));
150
151 menubar->insertItem(i18n("&Message"), mMessage);
152
153 // Help Menu
154 mHelp = kapp->getHelpMenu(true,
155 i18n("kfe - kde fido editor\n\n"
156 "(c) 1998 Michael Espey\n"
157 "a KDE Squish Editor"));
158 menubar->insertItem(i18n("&Help"), mHelp);
159 }
160
161
162
setupToolBar()163 void KkfeTopLevel::setupToolBar()
164 {
165 KIconLoader iconLoader;
166 toolbar = new KToolBar(this);
167
168 addToolBar(toolbar);
169
170 toolbar->insertButton(iconLoader.loadIcon("filenew.xpm"), ID_FILE_NEWMSG, SIGNAL(clicked()),
171 this, SLOT(cmFileNewMsg()), TRUE, i18n("New Message"));
172 toolbar->insertButton(iconLoader.loadIcon("start.xpm"), 1, SIGNAL(clicked()),
173 this, SLOT(cmMessageFirst()), TRUE, i18n("First Message"));
174 toolbar->insertButton(iconLoader.loadIcon("prev.xpm"), 2, SIGNAL(clicked()),
175 this, SLOT(cmMessagePrev()), TRUE, i18n("Previous Message"));
176 toolbar->insertButton(iconLoader.loadIcon("next.xpm"), 3, SIGNAL(clicked()),
177 this, SLOT(cmMessageNext()), TRUE, i18n("Next Message"));
178 toolbar->insertButton(iconLoader.loadIcon("finish.xpm"), 4, SIGNAL(clicked()),
179 this, SLOT(cmMessageLast()), TRUE, i18n("Last Message"));
180
181 toolbar->setBarPos(KToolBar::Top);
182 }
183
184
185
setupStatusBar()186 void KkfeTopLevel::setupStatusBar()
187 {
188 statusbar = new KStatusBar(this);
189 statusbar->insertItem("StatusText", 1);
190
191 // statusbar->show();
192 setStatusBar(statusbar);
193 }
194
195
196
cmFileNewMsg()197 void KkfeTopLevel::cmFileNewMsg()
198 {
199 composeWidget* composewidget = new composeWidget(smapi);
200 composewidget->show();
201 }
202
203
204
cmFileNewReader()205 void KkfeTopLevel::cmFileNewReader()
206 {
207 KkfeTopLevel* kfe = new KkfeTopLevel();
208 kfe->show();
209 }
210
211
212
cmFileQuit()213 void KkfeTopLevel::cmFileQuit()
214 {
215 writeConfig();
216 // *** change this later
217 kapp->quit();
218 }
219
220
221
cmAreaListSelected(int index,int column=0)222 void KkfeTopLevel::cmAreaListSelected(int index, int column = 0)
223 {
224 smapi->setCurAreaNum(index);
225 debug("vor set caption");
226 CHECK_PTR(smapi->getCurArea());
227 CHECK_PTR(smapi->getCurArea()->getName());
228
229 setCaption("kfe - " + smapi->getCurArea()->getName());
230 debug("vor cmMessageRescanList");
231 cmMessageRescanList();
232 debug("nach cmMessageRescanList");
233 }
234
235
236
cmAreaRescanList()237 void KkfeTopLevel::cmAreaRescanList()
238 {
239 debug("vor upDateConten");
240 aList->updateContent();
241 debug("nach upDateContent");
242 cmAreaListSelected(aList->currentItem());
243 }
244
245
246
cmAreaFirst()247 void KkfeTopLevel::cmAreaFirst()
248 {
249 cmAreaListSelected(0);
250 }
251
252
253
cmAreaPrev()254 void KkfeTopLevel::cmAreaPrev()
255 {
256 if (aList->currentItem() > 0) {
257 aList->setCurrentItem(aList->currentItem() - 1);
258 cmAreaListSelected(aList->currentItem());
259 }
260 }
261
262
263
cmAreaNext()264 void KkfeTopLevel::cmAreaNext()
265 {
266 if (aList->currentItem() + 1 < aList->numRows()) {
267 aList->setCurrentItem(aList->currentItem() + 1);
268 cmAreaListSelected(aList->currentItem());
269 }
270 }
271
272
273
cmAreaLast()274 void KkfeTopLevel::cmAreaLast()
275 {
276 aList->setCurrentItem(aList->numRows() - 1);
277 cmAreaListSelected(aList->currentItem());
278 }
279
280
281
cmMessageRescanList()282 void KkfeTopLevel::cmMessageRescanList()
283 {
284 debug("KkfeTopLevel::cmMessageRescanList()");
285 debug("vor rescan()");
286 mList->rescan();
287 debug("vor cmMsgListSelected()");
288 cmMsgListSelected(mList->currentItem());
289 debug("/KkfeTopLevel::cmMessageRescanList()");
290 }
291
292
293
cmMsgListSelected(int newItem,int colum=0)294 void KkfeTopLevel::cmMsgListSelected(int newItem, int colum =0)
295 {
296 debug("void KkfeTopLevel::cmMsgListSelected(int newItem, int colum =0)");
297 updateMsg();
298 }
299
300
301
cmMessageFirst()302 void KkfeTopLevel::cmMessageFirst()
303 {
304 mList->setCurrentItem(0);
305 cmMsgListSelected(mList->currentItem());
306 }
307
308
309
cmMessagePrev()310 void KkfeTopLevel::cmMessagePrev()
311 {
312 if (mList->currentItem() > 0) {
313 mList->setCurrentItem(mList->currentItem() - 1);
314 cmMsgListSelected(mList->currentItem());
315 }
316 }
317
318
319
cmMessageNext()320 void KkfeTopLevel::cmMessageNext()
321 {
322 if (mList->currentItem() + 1 < mList->numRows()) {
323 mList->setCurrentItem(mList->currentItem() + 1);
324 cmMsgListSelected(mList->currentItem());
325 }
326 }
327
328
329
cmMessageLast()330 void KkfeTopLevel::cmMessageLast()
331 {
332 mList->setCurrentItem(mList->numRows());
333 cmMsgListSelected(mList->currentItem());
334 }
335
336
337
updateMsg()338 void KkfeTopLevel::updateMsg()
339 {
340 debug("void KkfeTopLevel::updateMsg()");
341 msg->updateMsg();
342 debug("nach msg->updateMsg();");
343 /*
344 if (smapi->getCurArea() != 0) {
345 attrbar->upDate(smapi->getCurMsg()->getAttr());
346 }
347 */
348 // smapi->getCurArea()->setLastRead(smapi->getCurArea()->msgNum2UmsgId(mList->currentItem()));
349
350 char stattext[25];
351 /* sprintf(stattext, "Msg %d of %d (%d left)",
352 smapi->getCurMsgNum(), smapi->getCurArea()->getMsgNum(),
353 smapi->getCurArea()->getMsgNum()-smapi->getCurMsgNum());
354 statusbar->changeItem(stattext, 1);
355 */
356 }
357
358
359
readConfig()360 void KkfeTopLevel::readConfig()
361 {
362 kdeConfig = kapp->getConfig();
363
364 kdeConfig->setGroup("general");
365
366 widgetwidth = kdeConfig->readNumEntry("Width", 500);
367 widgetheight = kdeConfig->readNumEntry("Height", 350);
368 hpannerseperatorpos = kdeConfig->readNumEntry("hPannerSeperator", 100);
369 vpannerseperatorpos = kdeConfig->readNumEntry("vPannerSeperator", 100);
370 }
371
372
373
writeConfig()374 void KkfeTopLevel::writeConfig()
375 {
376 kdeConfig = kapp->getConfig();
377
378 // general items, window positions etc
379 kdeConfig->setGroup("general");
380 kdeConfig->writeEntry("Width", this->width());
381 kdeConfig->writeEntry("Height", this->height());
382 kdeConfig->writeEntry("hPannerSeperator", hPanner->absSeperatorPos());
383 kdeConfig->writeEntry("vPannerSeperator", vPanner->absSeperatorPos());
384
385 // the arealistbox
386 kdeConfig->setGroup("arealist");
387 kdeConfig->writeEntry("Area", 10);
388 kdeConfig->writeEntry("New", 10);
389 kdeConfig->writeEntry("Total", 10);
390
391 kdeConfig->sync();
392 }
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458