aboutsummaryrefslogtreecommitdiff
path: root/cashflow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cashflow.cpp')
-rw-r--r--cashflow.cpp39
1 files changed, 25 insertions, 14 deletions
diff --git a/cashflow.cpp b/cashflow.cpp
index f4f6e70..6df01a9 100644
--- a/cashflow.cpp
+++ b/cashflow.cpp
@@ -18,7 +18,7 @@
#include <QSignalBlocker>
#include <limits>
-CashFlow::CashFlow(QWidget *parent)
+CashFlow::CashFlow(QWidget *parent, const QString &filePath)
: QMainWindow(parent)
, ui(new Ui::CashFlow)
, currentTransactionId(-1)
@@ -34,10 +34,15 @@ CashFlow::CashFlow(QWidget *parent)
// Initialize database
database = new Database();
- // Try to open default database
- QString defaultDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
- QDir().mkpath(defaultDir);
- QString defaultPath = defaultDir + "/default.cashflo.sqlite";
+ // Determine which database to open
+ QString dbPath;
+ if (!filePath.isEmpty()) {
+ dbPath = filePath;
+ } else {
+ QString defaultDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
+ QDir().mkpath(defaultDir);
+ dbPath = defaultDir + "/default.cashflo.sqlite";
+ }
setupConnections();
@@ -61,14 +66,14 @@ CashFlow::CashFlow(QWidget *parent)
ui->chartDateFromEdit->setDate(QDate::currentDate().addMonths(-1));
ui->chartDateToEdit->setDate(QDate::currentDate().addMonths(3));
- if (!openDatabase(defaultPath)) {
- QMessageBox::critical(this, "Database Error", "Failed to open default database: " + database->lastError());
+ if (!openDatabase(dbPath)) {
+ QMessageBox::critical(this, "Database Error", "Failed to open database: " + database->lastError());
return;
}
// Regenerate all projections on startup to ensure they're current
database->regenerateAllProjections();
- refreshView(); // Refresh to show new projection IDs
+ // No need to call refreshView here - onJumpToToday already does it
}
CashFlow::~CashFlow()
@@ -733,7 +738,7 @@ void CashFlow::insertPeriodEndRow(const QString &label, double balance, const QM
dateItem->setBackground(QColor(180, 180, 180));
dateItem->setForeground(Qt::black);
dateItem->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);
- dateItem->setFlags(dateItem->flags() & ~Qt::ItemIsSelectable);
+ dateItem->setFlags(dateItem->flags() & ~Qt::ItemIsEditable);
dateItem->setData(Qt::UserRole, -1); // Mark as period end row
dateItem->setData(Qt::UserRole + 1, periodId); // Store period ID
ui->transactionTable->setItem(row, 0, dateItem);
@@ -741,13 +746,19 @@ void CashFlow::insertPeriodEndRow(const QString &label, double balance, const QM
// Span the Date cell across Date and Amount columns (columns 0 and 1)
ui->transactionTable->setSpan(row, 0, 1, 2);
+ // Column 1 (Amount) is hidden by the span, but set it to empty to avoid copy issues
+ QTableWidgetItem *hiddenAmountItem = new QTableWidgetItem("");
+ hiddenAmountItem->setBackground(QColor(180, 180, 180));
+ hiddenAmountItem->setFlags(hiddenAmountItem->flags() & ~Qt::ItemIsEditable);
+ ui->transactionTable->setItem(row, 1, hiddenAmountItem);
+
// Balance column: grand total
QTableWidgetItem *balanceItem = new QTableWidgetItem(QString("$%1").arg(formatCurrency(balance)));
balanceItem->setFont(QFont("Arial", 11, QFont::Bold));
balanceItem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
balanceItem->setBackground(QColor(180, 180, 180));
balanceItem->setForeground(balance < 0 ? QColor(200, 0, 0) : QColor(0, 100, 0));
- balanceItem->setFlags(balanceItem->flags() & ~Qt::ItemIsSelectable);
+ balanceItem->setFlags(balanceItem->flags() & ~Qt::ItemIsEditable);
ui->transactionTable->setItem(row, 2, balanceItem);
// Per-account columns
@@ -759,7 +770,7 @@ void CashFlow::insertPeriodEndRow(const QString &label, double balance, const QM
// Amount column: empty
QTableWidgetItem *acctAmtItem = new QTableWidgetItem("");
acctAmtItem->setBackground(QColor(180, 180, 180));
- acctAmtItem->setFlags(acctAmtItem->flags() & ~Qt::ItemIsSelectable);
+ acctAmtItem->setFlags(acctAmtItem->flags() & ~Qt::ItemIsEditable);
ui->transactionTable->setItem(row, amountCol, acctAmtItem);
// Balance column: account balance
@@ -769,7 +780,7 @@ void CashFlow::insertPeriodEndRow(const QString &label, double balance, const QM
acctBalItem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
acctBalItem->setBackground(QColor(180, 180, 180));
acctBalItem->setForeground(acctBalance < 0 ? QColor(200, 0, 0) : QColor(0, 100, 0));
- acctBalItem->setFlags(acctBalItem->flags() & ~Qt::ItemIsSelectable);
+ acctBalItem->setFlags(acctBalItem->flags() & ~Qt::ItemIsEditable);
ui->transactionTable->setItem(row, balanceCol, acctBalItem);
}
}
@@ -779,7 +790,7 @@ void CashFlow::insertPeriodEndRow(const QString &label, double balance, const QM
for (int col = accountCol; col < totalColumns; col++) {
QTableWidgetItem *emptyItem = new QTableWidgetItem("");
emptyItem->setBackground(QColor(180, 180, 180));
- emptyItem->setFlags(emptyItem->flags() & ~Qt::ItemIsSelectable);
+ emptyItem->setFlags(emptyItem->flags() & ~Qt::ItemIsEditable);
ui->transactionTable->setItem(row, col, emptyItem);
}
@@ -1830,7 +1841,7 @@ bool CashFlow::openDatabase(const QString &filePath) {
clearTransactionEntry();
clearRecurringEntry();
- refreshView();
+ onJumpToToday();
return true;
}