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