00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <qdir.h>
00023 #include <qprinter.h>
00024 #include <qpainter.h>
00025
00026 #include <kiconloader.h>
00027 #include <kmessagebox.h>
00028 #include <kfiledialog.h>
00029 #include <kmenubar.h>
00030 #include <klocale.h>
00031 #include <kconfig.h>
00032 #include <kstdaction.h>
00033
00034 #include "ksync.h"
00035 #include "ksync.moc"
00036 #include "ksyncview.h"
00037 #include <kstatusbar.h>
00038
00039 #define ID_STATUS_MSG 1
00040
00041 KSync::KSync(QWidget* , const char* name):KMainWindow(0, name)
00042 {
00043 config=kapp->config();
00044
00045 initStatusBar();
00046 initActions();
00047 initView();
00048
00049 readOptions();
00050
00051
00052 fileSave->setEnabled(false);
00053 fileSaveAs->setEnabled(false);
00054 filePrint->setEnabled(false);
00055 editCut->setEnabled(false);
00056 editCopy->setEnabled(false);
00057 editPaste->setEnabled(false);
00058 setAutoSaveSettings();
00059 }
00060
00061 void KSync::initActions()
00062 {
00063 fileNewWindow = new KAction(i18n("New &Window"), 0, 0, this, SLOT(slotFileNewWindow()), actionCollection(),"file_new_window");
00064 fileNew = KStdAction::openNew(this, SLOT(slotFileNew()), actionCollection());
00065 fileOpen = KStdAction::open(this, SLOT(slotFileOpen()), actionCollection());
00066 fileOpenRecent = KStdAction::openRecent(this, SLOT(slotFileOpenRecent(const KURL&)), actionCollection());
00067 fileSave = KStdAction::save(this, SLOT(slotFileSave()), actionCollection());
00068 fileSaveAs = KStdAction::saveAs(this, SLOT(slotFileSaveAs()), actionCollection());
00069 fileClose = KStdAction::close(this, SLOT(slotFileClose()), actionCollection());
00070 filePrint = KStdAction::print(this, SLOT(slotFilePrint()), actionCollection());
00071 fileQuit = KStdAction::quit(this, SLOT(slotFileQuit()), actionCollection());
00072 editCut = KStdAction::cut(this, SLOT(slotEditCut()), actionCollection());
00073 editCopy = KStdAction::copy(this, SLOT(slotEditCopy()), actionCollection());
00074 editPaste = KStdAction::paste(this, SLOT(slotEditPaste()), actionCollection());
00075 createStandardStatusBarAction();
00076 setStandardToolBarMenuEnabled(true);
00077
00078 fileNewWindow->setToolTip(i18n("Opens a new application window"));
00079 fileNew->setToolTip(i18n("Creates a new document"));
00080 fileOpen->setToolTip(i18n("Opens an existing document"));
00081 fileOpenRecent->setToolTip(i18n("Opens a recently used file"));
00082 fileSave->setToolTip(i18n("Saves the actual document"));
00083 fileSaveAs->setToolTip(i18n("Saves the actual document as..."));
00084 fileClose->setToolTip(i18n("Closes the actual document"));
00085 filePrint ->setToolTip(i18n("Prints out the actual document"));
00086 fileQuit->setToolTip(i18n("Quits the application"));
00087 editCut->setToolTip(i18n("Cuts the selected section and puts it to the clipboard"));
00088 editCopy->setToolTip(i18n("Copies the selected section to the clipboard"));
00089 editPaste->setToolTip(i18n("Pastes the clipboard contents to actual position"));
00090
00091
00092 createGUI();
00093
00094 }
00095
00096
00097 void KSync::initStatusBar()
00098 {
00099 statusBar()->insertItem(i18n("Ready."), ID_STATUS_MSG);
00100 }
00101
00102 void KSync::initView()
00103 {
00104 mView = new KSyncView(this);
00105 setCentralWidget(mView);
00106
00107 }
00108
00109 void KSync::openDocumentFile(const KURL& url)
00110 {
00111 slotStatusMsg(i18n("Opening file..."));
00112
00113
00114 fileOpenRecent->addURL( url );
00115 slotStatusMsg(i18n("Ready."));
00116 }
00117
00118
00119 void KSync::saveOptions()
00120 {
00121 config->setGroup("General Options");
00122 fileOpenRecent->saveEntries(config,"Recent Files");
00123
00124 mView->writeConfig(config);
00125 }
00126
00127
00128 void KSync::readOptions()
00129 {
00130 config->setGroup("General Options");
00131
00132
00133 fileOpenRecent->loadEntries(config,"Recent Files");
00134 mView->readConfig(config);
00135 }
00136
00137 void KSync::saveProperties(KConfig *)
00138 {
00139 #if 0
00140 if(doc->URL().fileName()!=i18n("Untitled") && !doc->isModified())
00141 {
00142
00143
00144 }
00145 else
00146 {
00147 KURL url=doc->URL();
00148 _cfg->writePathEntry("filename", url.url());
00149 _cfg->writeEntry("modified", doc->isModified());
00150 QString tempname = kapp->tempSaveName(url.url());
00151 QString tempurl= KURL::encode_string(tempname);
00152 KURL _url(tempurl);
00153 doc->saveDocument(_url);
00154 }
00155 #endif
00156 }
00157
00158
00159 void KSync::readProperties(KConfig *)
00160 {
00161 #if 0
00162 QString filename = _cfg->readPathEntry("filename");
00163 KURL url(filename);
00164 bool modified = _cfg->readBoolEntry("modified", false);
00165 if(modified)
00166 {
00167 bool canRecover;
00168 QString tempname = kapp->checkRecoverFile(filename, canRecover);
00169 KURL _url(tempname);
00170
00171 if(canRecover)
00172 {
00173 doc->openDocument(_url);
00174 doc->setModified();
00175 setCaption(_url.fileName(),true);
00176 QFile::remove(tempname);
00177 }
00178 }
00179 else
00180 {
00181 if(!filename.isEmpty())
00182 {
00183 doc->openDocument(url);
00184 setCaption(url.fileName(),false);
00185 }
00186 }
00187 #endif
00188 }
00189
00190 bool KSync::queryClose()
00191 {
00192
00193 return true;
00194 }
00195
00196 bool KSync::queryExit()
00197 {
00198 saveOptions();
00199 return true;
00200 }
00201
00202 void KSync::slotFileNewWindow()
00203 {
00204 slotStatusMsg(i18n("Opening a new application window..."));
00205
00206 KSync *new_window= new KSync();
00207 new_window->show();
00208
00209 slotStatusMsg(i18n("Ready."));
00210 }
00211
00212 void KSync::slotFileNew()
00213 {
00214 slotStatusMsg(i18n("Creating new document..."));
00215
00216 #if 0
00217 if(!doc->saveModified())
00218 {
00219
00220
00221 }
00222 else
00223 {
00224 doc->newDocument();
00225 setCaption(doc->URL().fileName(), false);
00226 }
00227 #endif
00228
00229 slotStatusMsg(i18n("Ready."));
00230 }
00231
00232 void KSync::slotFileOpen()
00233 {
00234 slotStatusMsg(i18n("Opening file..."));
00235
00236 #if 0
00237 if(!doc->saveModified())
00238 {
00239
00240
00241 }
00242 else
00243 {
00244 KURL url=KFileDialog::getOpenURL(QString::null,
00245 i18n("*|All Files"), this, i18n("Open File"));
00246 if(!url.isEmpty())
00247 {
00248 doc->openDocument(url);
00249 setCaption(url.fileName(), false);
00250 fileOpenRecent->addURL( url );
00251 }
00252 }
00253 #endif
00254
00255 slotStatusMsg(i18n("Ready."));
00256 }
00257
00258 void KSync::slotFileOpenRecent(const KURL&)
00259 {
00260 slotStatusMsg(i18n("Opening file..."));
00261
00262 #if 0
00263 if(!doc->saveModified())
00264 {
00265
00266 }
00267 else
00268 {
00269 doc->openDocument(url);
00270 setCaption(url.fileName(), false);
00271 }
00272 #endif
00273
00274 slotStatusMsg(i18n("Ready."));
00275 }
00276
00277 void KSync::slotFileSave()
00278 {
00279 slotStatusMsg(i18n("Saving file..."));
00280
00281
00282
00283 slotStatusMsg(i18n("Ready."));
00284 }
00285
00286 void KSync::slotFileSaveAs()
00287 {
00288 slotStatusMsg(i18n("Saving file with a new filename..."));
00289
00290 KURL url=KFileDialog::getSaveURL(QDir::currentDirPath(),
00291 i18n("*|All Files"), this, i18n("Save As"));
00292 if(!url.isEmpty())
00293 {
00294
00295 fileOpenRecent->addURL(url);
00296
00297 }
00298
00299 slotStatusMsg(i18n("Ready."));
00300 }
00301
00302 void KSync::slotFileClose()
00303 {
00304 slotStatusMsg(i18n("Closing file..."));
00305
00306 close();
00307
00308 slotStatusMsg(i18n("Ready."));
00309 }
00310
00311 void KSync::slotFilePrint()
00312 {
00313 slotStatusMsg(i18n("Printing..."));
00314
00315 QPrinter printer;
00316 if (printer.setup(this))
00317 {
00318 mView->print(&printer);
00319 }
00320
00321 slotStatusMsg(i18n("Ready."));
00322 }
00323
00324 void KSync::slotFileQuit()
00325 {
00326 slotStatusMsg(i18n("Exiting..."));
00327 saveOptions();
00328
00329
00330 KMainWindow* w;
00331 if(memberList)
00332 {
00333 for(w=memberList->first(); w!=0; w=memberList->first())
00334 {
00335
00336
00337 if(!w->close())
00338 break;
00339 }
00340 }
00341 slotStatusMsg(i18n("Ready."));
00342 }
00343
00344 void KSync::slotEditCut()
00345 {
00346 slotStatusMsg(i18n("Cutting selection..."));
00347
00348 slotStatusMsg(i18n("Ready."));
00349 }
00350
00351 void KSync::slotEditCopy()
00352 {
00353 slotStatusMsg(i18n("Copying selection to clipboard..."));
00354
00355 slotStatusMsg(i18n("Ready."));
00356 }
00357
00358 void KSync::slotEditPaste()
00359 {
00360 slotStatusMsg(i18n("Inserting clipboard contents..."));
00361
00362 slotStatusMsg(i18n("Ready."));
00363 }
00364
00365 void KSync::slotStatusMsg(const QString &text)
00366 {
00367 statusBar()->clear();
00368 statusBar()->changeItem(text, ID_STATUS_MSG);
00369 }
00370