Diffstat (limited to 'noncore/apps/qashmoney/preferences.cpp') (more/less context) (ignore whitespace changes)
-rwxr-xr-x | noncore/apps/qashmoney/preferences.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/noncore/apps/qashmoney/preferences.cpp b/noncore/apps/qashmoney/preferences.cpp index 9bf64dd..880807a 100755 --- a/noncore/apps/qashmoney/preferences.cpp +++ b/noncore/apps/qashmoney/preferences.cpp @@ -147,24 +147,74 @@ void Preferences::initializeColumnPreferences () // initialize budget actual column sqlite_get_table ( db, "select width from columns where id = 15;", &results, &rows, &columns, 0 ); if ( rows == 0 ) sqlite_exec ( db, "insert into columns values ( 'budgetactual', 50, 0, 0, 0, NULL );", 0, 0, 0 ); } +void Preferences::initializeSortingPreferences () + { + int rows = 0; + int columns = 0; + char **results; + + if ( sqlite_get_table ( db, "select count() from sorting;", 0, 0, 0, 0 ) != 0 ) + sqlite_exec ( db, "create table sorting ( listbox, column, direction, id integer primary key );", 0, 0, 0 ); + + // initialize account listbox sorting. Set direction = 1 here so ascending sort is default. + sqlite_get_table ( db, "select column, direction from sorting where id = 1;", &results, &rows, &columns, 0 ); + if ( rows == 0 ) + sqlite_exec ( db, "insert into sorting values ( 'accounts', 0, 1, NULL );", 0, 0, 0 ); + + // initialize transaction listbox sorting + sqlite_get_table ( db, "select column, direction from sorting where id = 2;", &results, &rows, &columns, 0); + if ( rows == 0 ) + sqlite_exec ( db, "insert into sorting values ( 'transactions', 0, 1, NULL );", 0, 0, 0 ); + + // initialize budgets listbox sorting + sqlite_get_table ( db, "select column, direction from sorting where id = 3;", & results, &rows, &columns, 0 ); + if ( rows == 0 ) + sqlite_exec ( db, "insert into sorting values ( 'budgets', 0, 1, NULL );", 0, 0, 0 ); + } + void Preferences::changeColumnPreference ( int id, int width ) { sqlite_exec_printf ( db, "update columns set width = %i where id = %i;", 0, 0, 0, width, id ); } int Preferences::getColumnPreference ( int id ) { char **results; sqlite_get_table_printf ( db, "select width from columns where id = %i;", &results, NULL, NULL, NULL, id ); return atoi ( results [ 1 ] ); } +void Preferences::changeSortingPreference ( int id, int column ) + { + int pColumn = 0; // column setting coming from the prefs object + int pDirection = 0; // direction setting coming from the prefs object + + // because there appears to be no way to query the QT header object directly for it's current sort settings, we have + // to maintain track of them ourselves. So start by pulling the current saved setting for this view. + getSortingPreference ( id, &pColumn, &pDirection ); + + // if the current saved column == the new column, then the user wants to toggle the sort order. + // otherwise we behave like QT does by default, which is to select the new column and default to an ascending sort. + if ( column == pColumn ) + sqlite_exec_printf ( db, "update sorting set direction = %i where id = %i;", 0, 0, 0, !pDirection, id ); + else + sqlite_exec_printf ( db, "update sorting set column = %i, direction = 1 where id = %i;", 0, 0, 0, column, id ); + } + +void Preferences::getSortingPreference ( int id, int *column, int *direction ) + { + char **results; + sqlite_get_table_printf ( db, "select column, direction from sorting where id = %i;", &results, NULL, NULL, NULL, id ); + *column = atoi ( results [ 2 ] ); + *direction = atoi ( results [ 3 ] ); + } + int Preferences::getPreference ( int id ) { char **results; sqlite_get_table_printf ( db, "select preference from preferences where id = %i;", &results, NULL, NULL, NULL, id ); return atoi ( results [ 1 ] ); } |