kmymoney2.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           kmymoney2.h
00003                              -------------------
00004     copyright            : (C) 2000-2001 by Michael Edwardes
00005     email                : mte@users.sourceforge.net
00006  ***************************************************************************/
00007 
00008 /***************************************************************************
00009  *                                                                         *
00010  *   This program is free software; you can redistribute it and/or modify  *
00011  *   it under the terms of the GNU General Public License as published by  *
00012  *   the Free Software Foundation; either version 2 of the License, or     *
00013  *   (at your option) any later version.                                   *
00014  *                                                                         *
00015  ***************************************************************************/
00016 #ifndef KMYMONEY2_H
00017 #define KMYMONEY2_H
00018 
00019 #ifdef HAVE_CONFIG_H
00020 #include <config.h>
00021 #endif
00022 
00023 // ----------------------------------------------------------------------------
00024 // QT Includes
00025 
00026 #include <qapplication.h>
00027 class QTimer;
00028 class QLabel;
00029 
00030 // ----------------------------------------------------------------------------
00031 // KDE Includes
00032 
00033 #include <kapplication.h>
00034 #include <kmainwindow.h>
00035 #include <kaccel.h>
00036 #include <kaction.h>
00037 #include <kprocess.h>
00038 #include <kurl.h>
00039 #include <kfile.h>
00040 #include <dcopobject.h>
00041 class KComboBox;
00042 class KPushButton;
00043 
00044 // ----------------------------------------------------------------------------
00045 // Project Includes
00046 
00047 #include <kmymoney/mymoneyaccount.h>
00048 #include <kmymoney/mymoneyscheduled.h>
00049 #include <kmymoney/mymoneyinstitution.h>
00050 #include <kmymoney/mymoneypayee.h>
00051 #include <kmymoney/mymoneybudget.h>
00052 #include <kmymoney/kmymoneyplugin.h>
00053 #include <kmymoney/register.h>
00054 #include <kmymoney/kmymoneyutils.h>
00055 
00056 class QSignalMapper;
00057 class KProgress;
00058 class KMyMoneyView;
00059 class MyMoneyQifReader;
00060 class MyMoneyStatementReader;
00061 class MyMoneyStatement;
00062 class IMyMoneyStorage;
00063 class KFindTransactionDlg;
00064 class TransactionEditor;
00065 class KEndingBalanceDlg;
00066 class KPluginInfo;
00067 
00068 namespace KMyMoneyPlugin { class ImporterPlugin; }
00069 
00096 class KMyMoney2App : public KMainWindow, public DCOPObject
00097 {
00098   Q_OBJECT
00099   K_DCOP
00100 
00101 protected slots:
00102   void slotFileSaveAsFilterChanged(const QString& filter);
00103 
00112   void slotAutoSave(void);
00113 
00118   void slotEnableMessages(void);
00119 
00123   void slotFileFileInfo(void);
00124 
00125   void slotPerformanceTest(void);
00126 
00130   void slotToggleTraces(void);
00131 
00135   void slotToggleTimers(void);
00136 
00140   void slotFileViewPersonal(void);
00141 
00149   void slotQifImport(void);
00150 
00154   void slotQifImportFinished(void);
00155 
00161   void slotGncImport(void);
00162 
00168   void slotAccountChart(void);
00169 
00175   void slotStatementImport(void);
00176 
00177   void slotLoadAccountTemplates(void);
00178   void slotSaveAccountTemplates(void);
00179 
00185   void slotQifExport(void);
00186 
00192   void slotSettings(void);
00193 
00195   void slotFileBackup(void);
00196 
00197   void slotShowTipOfTheDay(void);
00198 
00199   void slotQifProfileEditor(void);
00200 
00201   void slotShowPreviousView(void);
00202 
00203   void slotShowNextView(void);
00204 
00205   void slotSecurityEditor(void);
00206 
00211   void slotFindTransaction(void);
00212 
00216   void slotCloseSearchDialog(void);
00217 
00223   void slotInstitutionEdit(const MyMoneyObject& obj = MyMoneyInstitution());
00224 
00228   void slotInstitutionDelete(void);
00229 
00242   void slotCategoryNew(const QString& name, QString& id);
00243 
00247   void slotPrintView(void);
00248 
00252   void slotInvestmentNew(void);
00253 
00257   void slotInvestmentNew(MyMoneyAccount& account, const MyMoneyAccount& parent);
00258 
00263   void slotInvestmentEdit(void);
00264 
00268   void slotInvestmentDelete(void);
00269 
00273   void slotOnlinePriceUpdate(void);
00274 
00278   void slotManualPriceUpdate(void);
00279 
00283   void slotUpdateConfiguration(void);
00284 
00287   void slotPayeeNew(const QString& newnameBase, QString& id);
00288   void slotPayeeNew(void);
00289 
00292   void slotPayeeDelete(void);
00293 
00296   void slotBudgetNew(void);
00297 
00300   void slotBudgetDelete(void);
00301 
00304   void slotBudgetCopy(void);
00305 
00308   void slotBudgetChangeYear(void);
00309 
00312   void slotBudgetForecast(void);
00313 
00316   void slotCurrencyNew(void);
00317 
00320   void slotCurrencyRename(QListViewItem* item, int, const QString& txt);
00321 
00324   void slotCurrencyDelete(void);
00325 
00328   void slotCurrencySetBase(void);
00329 
00333   void slotNewFeature(void);
00334 
00337   void slotTransactionsNew(void);
00338 
00341   void slotTransactionsEdit(void);
00342 
00345   void slotTransactionsEditSplits(void);
00346 
00349   void slotTransactionsDelete(void);
00350 
00353   void slotTransactionsEnter(void);
00354 
00357   void slotTransactionsCancel(void);
00358 
00361   void slotTransactionsCancelOrEnter(bool& okToSelect);
00362 
00365   void slotTransactionDuplicate(void);
00366 
00369   void slotToggleReconciliationFlag(void);
00370 
00373   void slotMarkTransactionCleared(void);
00374 
00377   void slotMarkTransactionReconciled(void);
00378 
00381   void slotMarkTransactionNotReconciled(void);
00382 
00385   void slotTransactionGotoAccount(void);
00386 
00389   void slotTransactionGotoPayee(void);
00390 
00393   void slotTransactionCreateSchedule(void);
00394 
00397   void slotTransactionAssignNumber(void);
00398 
00401   void slotTransactionCombine(void);
00402 
00406   void slotTransactionsAccept(void);
00407 
00413   void slotDateChanged(void);
00414 
00419   void slotDataChanged(void);
00420 
00421   void slotMoveToAccount(const QString& id);
00422 
00423   void slotUpdateMoveToAccountMenu(void);
00424 
00429   void slotScheduleNew(const MyMoneyTransaction& t, MyMoneySchedule::occurenceE occurence = MyMoneySchedule::OCCUR_MONTHLY);
00430 
00433   void slotScheduleDuplicate(void);
00434 
00435   void slotKDELanguageSettings(void);
00436 
00437   void slotAccountMapOnline(void);
00438   void slotAccountUnmapOnline(void);
00439   void slotAccountUpdateOnline(void);
00440   void slotAccountUpdateOnlineAll(void);
00441 
00442   void slotManageGpgKeys(void);
00443   void slotKeySelected(int idx);
00444 
00445 public:
00450   void createInitialAccount(void);
00451 
00461   const KURL lastOpenedURL(void);
00462 
00466   KMyMoney2App(QWidget* parent=0, const char* name=0);
00467 
00471   ~KMyMoney2App();
00472 
00474   bool initWizard(void);
00475 
00476   static void progressCallback(int current, int total, const QString&);
00477 
00478   void writeLastUsedDir(const QString& directory);
00479   QString readLastUsedDir(void) const;
00480   void writeLastUsedFile(const QString& fileName);
00481   QString readLastUsedFile(void) const;
00482 
00486   bool isImportableFile( const KURL& url );
00487 
00496   void updateCaption(bool skipActions = false);
00497 
00504   const QValueList<QCString> instanceList(void) const;
00505 
00509   void dumpActions(void) const;
00510 
00515   void showContextMenu(const QString& containerName);
00516 
00522   void createCategory(MyMoneyAccount& account, const MyMoneyAccount& parent);
00523 
00529   const MyMoneyAccount& account(const QString& key, const QString& value) const;
00530 
00535   void setAccountOnlineParameters(const MyMoneyAccount& acc, const MyMoneyKeyValueContainer& kvps);
00536 
00537   KURL selectFile(const QString& title, const QString& path, const QString& mask, KFile::Mode mode);
00538 
00539   const MyMoneyAccount& findAccount(const MyMoneyAccount& acc, const MyMoneyAccount& parent) const;
00540 
00541   void createAccount(MyMoneyAccount& newAccount, MyMoneyAccount& parentAccount, MyMoneyAccount& brokerageAccount, MyMoneyMoney openingBal);
00542 
00543 k_dcop:
00544   // Note: Don't use e.g. filename(void) but use filename() because
00545   // otherwise the kidl compiler produces uncompilable results.
00546   const QString filename() const;
00547 
00548   void webConnect(const QString&, const QCString& asn_id);
00549 
00556   bool okToWriteFile(const KURL& url);
00557 
00558   // QValueList<MyMoneyAccount> accountList() const;
00559 
00560 protected:
00564   void saveOptions(void);
00565 
00570   void createInterfaces(void);
00571 
00576   void loadPlugins(void);
00577 
00580   void readOptions(void);
00581 
00583   void initActions(void);
00584 
00586   void initDynamicMenus(void);
00587 
00590   void initStatusBar(void);
00591 
00598   virtual bool queryClose(void);
00599 
00606   virtual bool queryExit(void);
00607 
00608   void slotCheckSchedules(void);
00609 
00610   virtual void resizeEvent(QResizeEvent*);
00611 
00612   void createSchedule(MyMoneySchedule newSchedule, MyMoneyAccount& newAccount);
00613 
00626   bool canCloseAccount(const MyMoneyAccount& acc) const;
00627 
00637   bool payeeInList(const QValueList<MyMoneyPayee>& list, const QString& id) const;
00638 
00649   void markTransaction(MyMoneySplit::reconcileFlagE flag);
00650 
00664   KMyMoneyUtils::EnterScheduleResultCodeE enterSchedule(MyMoneySchedule& s, bool autoEnter = false, bool extendedKeys = false);
00665 
00672   void createInstitution(MyMoneyInstitution& institution);
00673 
00677   void transactionUnmatch(void);
00678 
00682   void transactionMatch(void);
00683 
00684 public slots:
00685   void slotFileInfoDialog(void);
00686 
00688   void slotFileNew(void);
00689 
00691   void slotFileNewWindow(void);
00692 
00694   void slotFileOpen(void);
00695 
00698   void slotFileOpenRecent(const KURL& url);
00699 
00701   void slotOpenDatabase(void);
00702 
00710   bool slotFileSave(void);
00711 
00718   bool slotFileSaveAs(void);
00719 
00726   bool slotSaveAsDatabase(void);
00727 
00729   void slotFileCloseWindow(void);
00730 
00732   void slotFileClose(void);
00733 
00740   void slotFileQuit(void);
00741 
00742   void slotFileConsitencyCheck(void);
00743 
00747   void slotPriceDialog(void);
00748 
00752   void slotCurrencyDialog(void);
00753 
00757   void slotHideReconciledTransactions(void);
00758 
00762   void slotHideUnusedCategories(void);
00763 
00767   void slotShowAllAccounts(void);
00768 
00769 
00777   const QString slotStatusMsg(const QString &text);
00778 
00792   void slotStatusProgressBar(int current, int total = 0);
00793 
00795   void slotProcessExited(void);
00796 
00800   void slotEquityPriceUpdate(void);
00801 
00807   bool slotStatementImport(const MyMoneyStatement& s);
00808 
00813   bool slotStatementImport(const QString& url);
00814 
00818   void slotAccountReconcileStart(void);
00819 
00823   void slotAccountReconcileFinish(void);
00824 
00828   void slotAccountReconcilePostpone(void);
00829 
00833   void slotAccountDelete(void);
00834 
00839   void slotAccountEdit(void);
00840 
00844   void slotAccountOpen(const MyMoneyObject& = MyMoneyAccount());
00845 
00849   void slotAccountClose(void);
00850 
00854   void slotAccountReopen(void);
00855 
00862   void slotReparentAccount(const MyMoneyAccount& src, const MyMoneyAccount& dest);
00863 
00870   void slotReparentAccount(const MyMoneyAccount& src, const MyMoneyInstitution& dest);
00871 
00876   void slotAccountTransactionReport(void);
00877 
00882   void slotShowAccountContextMenu(const MyMoneyObject&);
00883 
00888   void slotShowScheduleContextMenu(void);
00889 
00894   void slotShowInstitutionContextMenu(const MyMoneyObject&);
00895 
00900   void slotShowInvestmentContextMenu(void);
00901 
00906   void slotShowPayeeContextMenu(void);
00907 
00912   void slotShowBudgetContextMenu(void);
00913 
00918   void slotShowTransactionContextMenu(void);
00919 
00924   void slotShowCurrencyContextMenu(void);
00925 
00930   void slotScheduleNew(void);
00931 
00935   void slotScheduleEdit(void);
00936 
00940   void slotScheduleDelete(void);
00941 
00946   void slotScheduleEnter(void);
00947 
00952   void slotScheduleSkip(void);
00953 
00957   void slotToolsStartKCalc(void);
00958 
00959   void slotResetSelections(void);
00960 
00961   void slotSelectAccount(const MyMoneyObject& account = MyMoneyAccount());
00962 
00963   void slotSelectInstitution(const MyMoneyObject& institution = MyMoneyInstitution());
00964 
00965   void slotSelectInvestment(const MyMoneyObject& account = MyMoneyAccount());
00966 
00967   void slotSelectSchedule(const MyMoneySchedule& schedule = MyMoneySchedule());
00968 
00969   void slotSelectPayees(const QValueList<MyMoneyPayee>& list);
00970 
00971   void slotSelectBudget(const QValueList<MyMoneyBudget>& list);
00972 
00973   void slotSelectTransactions(const KMyMoneyRegister::SelectedTransactions& list);
00974 
00975   void slotSelectCurrency(const MyMoneySecurity& currency = MyMoneySecurity());
00976 
00977   void slotTransactionMatch(void);
00978 
00982   void slotAccountNew(void);
00983   void slotAccountNew(MyMoneyAccount&);
00984 
00988   void slotCategoryNew(void);
00989 
01000   void slotCategoryNew(MyMoneyAccount& account, const MyMoneyAccount& parent = MyMoneyAccount());
01001 
01005   void slotUpdateActions(void);
01006 
01010   void slotInstitutionNew(void);
01011 
01020   void slotInstitutionNew(MyMoneyInstitution& institution);
01021 
01025   void slotPluginPlug(KPluginInfo*);
01026 
01030   void slotPluginUnplug(KPluginInfo*);
01031 
01032 private:
01033   // bool verifyImportedData(const MyMoneyAccount& account);
01034 
01039   void ready(void);
01040 
01048   bool isReady(void);
01049 
01054   void deleteTransactionEditor(void);
01055 
01059   void doDeleteTransactions(void);
01060 
01066   bool exchangeAccountInTransaction(MyMoneyTransaction& _t, const QString& fromId, const QString& toId);
01067 
01068 signals:
01073   void fileLoaded(const KURL& url);
01074 
01081   void payeesSelected(const QValueList<MyMoneyPayee>& payees);
01082 
01089   void transactionsSelected(const KMyMoneyRegister::SelectedTransactions& transactions);
01090 
01095   void selectAllTransactions(void);
01096 
01103   void budgetSelected(const QValueList<MyMoneyBudget>& budget);
01104   void budgetRename(void);
01105 
01112   void accountSelected(const MyMoneyAccount& account);
01113   void investmentSelected(const MyMoneyAccount& account);
01114 
01121   void institutionSelected(const MyMoneyInstitution& institution);
01122 
01129   void scheduleSelected(const MyMoneySchedule& schedule);
01130 
01137   void currencySelected(const MyMoneySecurity& currency);
01138 
01139   void payeeRename(void);
01140   void payeeCreated(const QString& id);
01141 
01142   void currencyRename(void);
01143   void currencyCreated(const QString& id);
01144 
01145   void startMatchTransaction(const MyMoneyTransaction& t);
01146   void cancelMatchTransaction(void);
01147 
01160   void accountReconciled(const MyMoneyAccount& account, const QDate& date, const MyMoneyMoney& startingBalance, const MyMoneyMoney& endingBalance, const QValueList<QPair<MyMoneyTransaction, MyMoneySplit> >& transactionList);
01161 
01162 public:
01172   KAction* action(const QString& actionName) const;
01173 
01181   KToggleAction* toggleAction(const QString& actionName) const;
01182 
01183 
01184 private:
01186   class Private;
01187   /*
01188    * Actually, one should write "Private * const d" but that confuses the KIDL
01189    * compiler in this context. It complains about the const keyword. So we leave
01190    * it out here
01191    */
01193   Private* d;
01194 
01196   KConfig *config;
01197 
01198   QMap<QString,KMyMoneyPlugin::ImporterPlugin*> m_importerPlugins;
01199 
01200   QMap<QString, KMyMoneyPlugin::OnlinePlugin*> m_onlinePlugins;
01201 
01202   enum backupStateE {
01203     BACKUP_IDLE = 0,
01204     BACKUP_MOUNTING,
01205     BACKUP_COPYING,
01206     BACKUP_UNMOUNTING
01207   };
01217   backupStateE   m_backupState;
01218 
01222   int     m_backupResult;
01223 
01228   bool    m_backupMount;
01229 
01230   KProcess proc;
01231 
01233   KMyMoneyView *myMoneyView;
01234 
01236   KURL  m_fileName;
01237 
01238   bool m_startDialog;
01239   QString m_mountpoint;
01240 
01241   KProgress* progressBar;
01242 
01243   QString m_statusMsg;
01244 
01245   int m_progressUpdate;
01246   int m_nextUpdate;
01247 
01248   MyMoneyQifReader* m_qifReader;
01249   MyMoneyStatementReader* m_smtReader;
01250   KFindTransactionDlg* m_searchDlg;
01251 
01252   bool m_bCheckSchedules;
01253 
01254   KToolBarPopupAction*  m_previousViewButton;
01255   KToolBarPopupAction*  m_nextViewButton;
01256 
01257   QObject*              m_pluginInterface;
01258 
01259   MyMoneyAccount        m_selectedAccount;
01260   MyMoneyAccount        m_reconciliationAccount;
01261   MyMoneyAccount        m_selectedInvestment;
01262   MyMoneyInstitution    m_selectedInstitution;
01263   MyMoneySchedule       m_selectedSchedule;
01264   MyMoneySecurity       m_selectedCurrency;
01265   QValueList<MyMoneyPayee>  m_selectedPayees;
01266   QValueList<MyMoneyBudget> m_selectedBudgets;
01267   KMyMoneyRegister::SelectedTransactions m_selectedTransactions;
01268 
01269   // This is Auto Saving related
01270   bool                  m_autoSaveEnabled;
01271   QTimer*               m_autoSaveTimer;
01272   int                   m_autoSavePeriod;
01273   bool                  m_inAutoSaving;
01274 
01275   // Pointer to the combo box used for key selection during
01276   // File/Save as
01277   KComboBox*            m_saveEncrypted;
01278 
01279   // pointer to the current transaction editor
01280   TransactionEditor*    m_transactionEditor;
01281 
01282   // Reconciliation dialog
01283   KEndingBalanceDlg*    m_endingBalanceDlg;
01284 
01285   // id's that need to be remembered
01286   QString               m_accountGoto, m_payeeGoto;
01287 
01288   QStringList           m_additionalGpgKeys;
01289   QLabel*               m_additionalKeyLabel;
01290   KPushButton*          m_additionalKeyButton;
01291 };
01292 
01293 extern  KMyMoney2App *kmymoney2;
01294 
01295 class KMStatus
01296 {
01297 public:
01298   KMStatus (const QString &text);
01299   ~KMStatus();
01300 private:
01301   QString m_prevText;
01302 };
01303 
01304 #define KMSTATUS(msg) KMStatus _thisStatus(msg)
01305 
01306 #endif // KMYMONEY2_H

Generated on Wed Jan 26 13:03:17 2011 for KMyMoney by  doxygen 1.5.6