kmymoney2.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
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
00025
00026 #include <qapplication.h>
00027 class QTimer;
00028 class QLabel;
00029
00030
00031
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
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
00545
00546 const QString filename() const;
00547
00548 void webConnect(const QString&, const QCString& asn_id);
00549
00556 bool okToWriteFile(const KURL& url);
00557
00558
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
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
01189
01190
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
01270 bool m_autoSaveEnabled;
01271 QTimer* m_autoSaveTimer;
01272 int m_autoSavePeriod;
01273 bool m_inAutoSaving;
01274
01275
01276
01277 KComboBox* m_saveEncrypted;
01278
01279
01280 TransactionEditor* m_transactionEditor;
01281
01282
01283 KEndingBalanceDlg* m_endingBalanceDlg;
01284
01285
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