public void SaveSettingsToDatabase(IListItemEx destination) {
if (CurrentFolder == null || !CurrentFolder.IsFolder) return;
var m_dbConnection = new SQLite.SQLiteConnection("Data Source=" + this._DBPath + ";Version=3;");
m_dbConnection.Open();
var command1 = new SQLite.SQLiteCommand("SELECT * FROM foldersettings WHERE Path=@Path", m_dbConnection);
command1.Parameters.AddWithValue("Path", destination.ParsingName);
var Reader = command1.ExecuteReader();
var sql = Reader.Read() ? @"UPDATE foldersettings
SET Path = @Path, LastSortOrder = @LastSortOrder, LastGroupOrder = @LastGroupOrder, LastGroupCollumn = @LastGroupCollumn,
View = @View, LastSortedColumn = @LastSortedColumn, Columns = @Columns, IconSize = @IconSize
WHERE Path = @Path" : @"INSERT into foldersettings (Path, LastSortOrder, LastGroupOrder, LastGroupCollumn, View, LastSortedColumn, Columns, IconSize)
VALUES (@Path, @LastSortOrder, @LastGroupOrder, @LastGroupCollumn, @View, @LastSortedColumn, @Columns, @IconSize)";
Int32[] orders = new Int32[this.Collumns.Count];
User32.SendMessage(this.LVHandle, (UInt32)MSG.LVM_GETCOLUMNORDERARRAY, orders.Length, orders);
var Columns_XML = new XElement("Columns");
foreach (var index in orders) {
var collumn = this.Collumns[index];
var width = (Int32)User32.SendMessage(this.LVHandle, MSG.LVM_GETCOLUMNWIDTH, index, 0);
var XML = new XElement("Column");
XML.Add(new XAttribute("ID", collumn.ID == null ? "" : collumn.ID.ToString()));
XML.Add(new XAttribute("Width", collumn.ID == null ? "" : width.ToString()));
Columns_XML.Add(XML);
}
var Values = new Dictionary<String, String>() {
{ "Path", destination.ParsingName },
{ "LastSortOrder", LastSortOrder.ToString() },
{ "LastGroupOrder", LastGroupOrder.ToString() },
{ "LastGroupCollumn", LastGroupCollumn == null ? null : LastGroupCollumn.ID },
{ "View", View.ToString() },
{ "LastSortedColumn", LastSortedColumnId.ToString() },
{ "Columns", Columns_XML.ToString()},
{ "IconSize", this.IconSize.ToString() }
};
var command2 = new SQLite.SQLiteCommand(sql, m_dbConnection);
foreach (var item in Values) {
command2.Parameters.AddWithValue(item.Key, item.Value);
}
command2.ExecuteNonQuery();
Reader.Close();
m_dbConnection.Close();
}