Changed the toggle column to app icon.

This commit is contained in:
apoorv569 2021-06-09 07:03:20 +05:30
parent 87b347ff2f
commit 08aa1df2ca
3 changed files with 455 additions and 33 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -1,9 +1,13 @@
#include <deque> #include <deque>
#include <exception> #include <exception>
#include <wx/dataview.h>
#include <wx/dvrenderers.h>
#include <wx/log.h> #include <wx/log.h>
#include <wx/msgdlg.h> #include <wx/msgdlg.h>
#include <wx/string.h> #include <wx/string.h>
#include <wx/stringimpl.h>
#include <wx/variant.h>
#include "Database.hpp" #include "Database.hpp"
#include "SettingsDialog.hpp" #include "SettingsDialog.hpp"
@ -871,9 +875,14 @@ Database::LoadDatabase(wxVector<wxVector<wxVariant>>& vecSet,
trash_tree.AppendItem(trash_item, filename); trash_tree.AppendItem(trash_item, filename);
else else
{ {
wxVariant icon_c, icon_gs;
icon_c << wxDataViewIconText(wxEmptyString, wxIcon("../assets/icons/icon-hive_16x16.png"));
icon_gs << wxDataViewIconText(wxEmptyString, wxIcon("../assets/icons/icon-hive_16x16-gs.png"));
if (favorite == 1) if (favorite == 1)
{ {
vec.push_back(true); // vec.push_back(true);
vec.push_back(icon_c);
wxLogDebug("Loading collection items.."); wxLogDebug("Loading collection items..");
@ -923,7 +932,8 @@ Database::LoadDatabase(wxVector<wxVector<wxVariant>>& vecSet,
} }
else else
vec.push_back(false); // vec.push_back(false);
vec.push_back(icon_gs);
if (show_extension) if (show_extension)
{ {

View File

@ -6,18 +6,24 @@
#include <wx/accel.h> #include <wx/accel.h>
#include <wx/arrstr.h> #include <wx/arrstr.h>
#include <wx/busyinfo.h> #include <wx/busyinfo.h>
#include <wx/dataview.h>
#include <wx/debug.h> #include <wx/debug.h>
#include <wx/defs.h> #include <wx/defs.h>
#include <wx/dir.h> #include <wx/dir.h>
#include <wx/dnd.h> #include <wx/dnd.h>
#include <wx/dvrenderers.h>
#include <wx/filefn.h> #include <wx/filefn.h>
#include <wx/gdicmn.h> #include <wx/gdicmn.h>
#include <wx/generic/icon.h>
#include <wx/gtk/dataobj2.h> #include <wx/gtk/dataobj2.h>
#include <wx/gtk/dataview.h>
#include <wx/log.h> #include <wx/log.h>
#include <wx/menu.h> #include <wx/menu.h>
#include <wx/msgdlg.h> #include <wx/msgdlg.h>
// #include "wx/gtk/colour.h"
#include <wx/progdlg.h> #include <wx/progdlg.h>
#include <wx/stdpaths.h> #include <wx/stdpaths.h>
#include <wx/stringimpl.h>
#include <wx/textdlg.h> #include <wx/textdlg.h>
#include <wx/variant.h> #include <wx/variant.h>
#include <wx/vector.h> #include <wx/vector.h>
@ -35,6 +41,10 @@
#include <wx/fswatcher.h> #include <wx/fswatcher.h>
#define ICON_APP "../assets/icons/icon-hive_24x24.png"
#define ICON_COLOURED "../assets/icons/icon-hive_16x16.png"
#define ICON_GREYSCALE "../assets/icons/icon-hive_16x16-gs.png"
MainFrame::MainFrame() MainFrame::MainFrame()
: wxFrame(NULL, wxID_ANY, "Sample Hive", wxDefaultPosition), : wxFrame(NULL, wxID_ANY, "Sample Hive", wxDefaultPosition),
m_ConfigFilepath("config.yaml"), m_DatabaseFilepath("sample.hive") m_ConfigFilepath("config.yaml"), m_DatabaseFilepath("sample.hive")
@ -167,7 +177,8 @@ MainFrame::MainFrame()
wxDV_MULTIPLE | wxDV_HORIZ_RULES | wxDV_VERT_RULES); wxDV_MULTIPLE | wxDV_HORIZ_RULES | wxDV_VERT_RULES);
// Adding columns to wxDataViewListCtrl. // Adding columns to wxDataViewListCtrl.
m_SampleListView->AppendToggleColumn("", wxDATAVIEW_CELL_ACTIVATABLE, 30, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE); // m_SampleListView->AppendToggleColumn("", wxDATAVIEW_CELL_ACTIVATABLE, 30, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE);
m_SampleListView->AppendIconTextColumn("Favorite", wxDATAVIEW_CELL_ACTIVATABLE, 30, wxALIGN_CENTER, wxDATAVIEW_COL_RESIZABLE);
m_SampleListView->AppendTextColumn("Filename", wxDATAVIEW_CELL_INERT, 320, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); m_SampleListView->AppendTextColumn("Filename", wxDATAVIEW_CELL_INERT, 320, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE);
m_SampleListView->AppendTextColumn("Sample Pack", wxDATAVIEW_CELL_INERT, 200, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); m_SampleListView->AppendTextColumn("Sample Pack", wxDATAVIEW_CELL_INERT, 200, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE);
m_SampleListView->AppendTextColumn("Type", wxDATAVIEW_CELL_INERT, 120, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE); m_SampleListView->AppendTextColumn("Type", wxDATAVIEW_CELL_INERT, 120, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE | wxDATAVIEW_COL_SORTABLE);
@ -210,7 +221,7 @@ MainFrame::MainFrame()
Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, &MainFrame::OnExpandTrash, this, BC_TrashPane); Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, &MainFrame::OnExpandTrash, this, BC_TrashPane);
Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &MainFrame::OnClickSampleView, this, BC_SampleListView); Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &MainFrame::OnClickSampleView, this, BC_SampleListView);
Bind(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, &MainFrame::OnCheckFavorite, this, BC_SampleListView); Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &MainFrame::OnCheckFavorite, this, BC_SampleListView);
Bind(wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, &MainFrame::OnDragFromSampleView, this); Bind(wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, &MainFrame::OnDragFromSampleView, this);
m_SampleListView->Connect(wxEVT_DROP_FILES, wxDropFilesEventHandler(MainFrame::OnDragAndDropToSampleListView), NULL, this); m_SampleListView->Connect(wxEVT_DROP_FILES, wxDropFilesEventHandler(MainFrame::OnDragAndDropToSampleListView), NULL, this);
Bind(wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, &MainFrame::OnShowSampleListViewContextMenu, this, BC_SampleListView); Bind(wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, &MainFrame::OnShowSampleListViewContextMenu, this, BC_SampleListView);
@ -431,10 +442,14 @@ void MainFrame::AddSamples(wxArrayString& files)
wxVector<wxVariant> data; wxVector<wxVariant> data;
wxVariant icon;
icon << wxDataViewIconText(wxEmptyString, wxIcon(ICON_GREYSCALE));
if (tags.IsFileValid()) if (tags.IsFileValid())
{ {
data.clear(); data.clear();
data.push_back(false); // data.push_back(false);
data.push_back(icon);
data.push_back(filename); data.push_back(filename);
data.push_back(sample.GetSamplePack()); data.push_back(sample.GetSamplePack());
data.push_back(""); data.push_back("");
@ -569,8 +584,6 @@ void MainFrame::OnDragAndDropToCollectionView(wxDropFilesEvent& event)
if(drop_target.IsOk() && m_CollectionView->IsContainer(drop_target)) if(drop_target.IsOk() && m_CollectionView->IsContainer(drop_target))
{ {
m_SampleListView->SetToggleValue(true, row, 0);
m_CollectionView->AppendItem(drop_target, files[i]); m_CollectionView->AppendItem(drop_target, files[i]);
db.UpdateFavoriteColumn(files[i].ToStdString(), 1); db.UpdateFavoriteColumn(files[i].ToStdString(), 1);
@ -579,6 +592,13 @@ void MainFrame::OnDragAndDropToCollectionView(wxDropFilesEvent& event)
else else
wxLogDebug("%s is not a folder. Try dropping on folder.", wxLogDebug("%s is not a folder. Try dropping on folder.",
m_CollectionView->GetItemText(drop_target)); m_CollectionView->GetItemText(drop_target));
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_COLOURED))),
row, 0);
// m_SampleListView->SetToggleValue(true, row, 0);
wxLogDebug("Number of children: %d", m_CollectionView->GetChildCount(wxDataViewItem(wxNullPtr)));
} }
} }
} }
@ -862,7 +882,7 @@ void MainFrame::OnShowSampleListViewContextMenu(wxDataViewEvent& event)
else else
return; return;
wxString selection = m_SampleListView->GetTextValue(selected_row, 1); wxString selection = m_SampleListView->GetTextValue(selected_row, 1).BeforeLast('.');
// wxString sample_with_extension = db.GetSamplePathByFilename(selection.BeforeLast('.').ToStdString()); // wxString sample_with_extension = db.GetSamplePathByFilename(selection.BeforeLast('.').ToStdString());
// wxString sample_without_extension = db.GetSamplePathByFilename(selection.ToStdString()); // wxString sample_without_extension = db.GetSamplePathByFilename(selection.ToStdString());
@ -882,7 +902,12 @@ void MainFrame::OnShowSampleListViewContextMenu(wxDataViewEvent& event)
wxMenu menu; wxMenu menu;
if (m_SampleListView->GetToggleValue(selected_row, 0)) // if (m_SampleListView->GetToggleValue(selected_row, 0))
// menu.Append(MN_FavoriteSample, "Remove from favorites");
// else
// menu.Append(MN_FavoriteSample, "Add to favorites");
if (db.GetFavoriteColumnValueByFilename(selection.ToStdString()) == 1)
menu.Append(MN_FavoriteSample, "Remove from favorites"); menu.Append(MN_FavoriteSample, "Remove from favorites");
else else
menu.Append(MN_FavoriteSample, "Add to favorites"); menu.Append(MN_FavoriteSample, "Add to favorites");
@ -898,17 +923,194 @@ void MainFrame::OnShowSampleListViewContextMenu(wxDataViewEvent& event)
switch (m_SampleListView->GetPopupMenuSelectionFromUser(menu, event.GetPosition())) switch (m_SampleListView->GetPopupMenuSelectionFromUser(menu, event.GetPosition()))
{ {
case MN_FavoriteSample: case MN_FavoriteSample:
{
int row = 0, container_row = 0;
if (m_SampleListView->GetSelectedItemsCount() <= 1) if (m_SampleListView->GetSelectedItemsCount() <= 1)
{ {
if (m_SampleListView->GetToggleValue(selected_row, 0)) // if(!column)
// {
// wxLogDebug("Column is not OK");
// return;
// }
// if (m_SampleListView->GetToggleValue(selected_row, 0))
// if(db.GetFavoriteColumnValueByFilename(selection.ToStdString()) == 1)
// {
// // m_SampleListView->SetToggleValue(false, selected_row, 0);
// CheckForDuplicates(selection, selected_row);
// msg = wxString::Format("Toggle: false");
// }
// else if(db.GetFavoriteColumnValueByFilename(selection.ToStdString()) == 0)
// {
// // m_SampleListView->SetToggleValue(true, selected_row, 0);
// CheckForDuplicates(selection, selected_row);
// msg = wxString::Format("Toggle: true");
// }
std::deque<wxDataViewItem> nodes;
nodes.push_back(m_CollectionView->GetNthChild(wxDataViewItem(wxNullPtr), container_row));
wxDataViewItem found_item;
// if(!column)
// {
// wxLogDebug("something wrong with column..");
// return;
// }
if(db.GetFavoriteColumnValueByFilename(selection.ToStdString()) == 0)
{ {
m_SampleListView->SetToggleValue(false, selected_row, 0); wxLogDebug("Column matches.. looking!");
msg = wxString::Format("Toggle: false"); while(!nodes.empty())
{
wxDataViewItem current_item = nodes.front();
nodes.pop_front();
if (m_CollectionView->GetItemText(current_item) == selection)
{
found_item = current_item;
wxLogDebug(m_CollectionView->GetItemText(current_item));
break;
}
wxLogDebug("Current item: %s", m_CollectionView->GetItemText(current_item));
while(current_item.IsOk())
{
wxDataViewItem child;
int child_count = m_CollectionView->GetChildCount(current_item);
int container_count = m_CollectionView->GetChildCount(wxDataViewItem(wxNullPtr));
if(row >= child_count)
{
container_row++;
row = 0;
if(container_row >= container_count)
break;
current_item = m_CollectionView->GetNthChild(wxDataViewItem(wxNullPtr), container_row);
wxLogDebug("Inside.. Current item: %s", m_CollectionView->GetItemText(current_item));
continue;
}
child = m_CollectionView->GetNthChild(current_item, row);
wxLogDebug("Child item: %s", m_CollectionView->GetItemText(child));
nodes.push_back(child);
row++;
}
}
nodes.clear();
if (found_item.IsOk())
{
wxString msg = wxString::Format("%s already added as favorite.", selection);
wxMessageDialog msgDialog(NULL, msg, "Info", wxOK | wxICON_INFORMATION);
msgDialog.ShowModal();
}
else
{
wxLogDebug("Sample not found adding as fav.");
wxDataViewItem selected = m_CollectionView->GetSelection();
wxString folder;
if(selected.IsOk() && m_CollectionView->IsContainer(selected))
{
folder = m_CollectionView->GetItemText(selected);
m_CollectionView->AppendItem(selected, selection);
}
else
{
folder = m_CollectionView->GetItemText(favorites_folder);
m_CollectionView->AppendItem(favorites_folder, selection);
}
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_COLOURED))),
selected_row, 0);
db.UpdateFavoriteColumn(selection.ToStdString(), 1);
db.UpdateFavoriteFolder(selection.ToStdString(), folder.ToStdString());
wxLogDebug("Adding %s to folder: %s", selection, folder);
}
} }
else else if(db.GetFavoriteColumnValueByFilename(selection.ToStdString()) == 1)
{ {
m_SampleListView->SetToggleValue(true, selected_row, 0); wxString folder_name = db.GetFavoriteFolderByFilename(selection.ToStdString());
msg = wxString::Format("Toggle: true");
while(!nodes.empty())
{
wxDataViewItem current_item = nodes.front();
nodes.pop_front();
wxLogDebug("%s folder name is: %s", selection, folder_name);
if (m_CollectionView->GetItemText(current_item) == folder_name)
{
found_item = current_item;
wxLogDebug("Found folder: %s", m_CollectionView->GetItemText(found_item));
}
wxLogDebug("Current item: %s", m_CollectionView->GetItemText(current_item));
while(current_item.IsOk())
{
wxDataViewItem child;
int child_count = m_CollectionView->GetChildCount(current_item);
int container_count = m_CollectionView->GetChildCount(wxDataViewItem(wxNullPtr));
if(row >= child_count)
{
container_row++;
row = 0;
if(container_row >= container_count)
break;
current_item = m_CollectionView->GetNthChild(wxDataViewItem(wxNullPtr), container_row);
wxLogDebug("Inside.. Current item: %s", m_CollectionView->GetItemText(current_item));
continue;
}
child = m_CollectionView->GetNthChild(current_item, row);
wxLogDebug("Child item: %s", m_CollectionView->GetItemText(child));
if (m_CollectionView->GetItemText(child) == selection)
{
found_item = child;
wxLogDebug("Will delete %s", m_CollectionView->GetItemText(found_item));
break;
}
nodes.push_back(child);
row++;
}
}
nodes.clear();
if (found_item.IsOk())
{
wxLogDebug("Folder: %s :: Child: %s", folder_name, m_CollectionView->GetItemText(found_item));
m_CollectionView->DeleteItem(found_item);
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_GREYSCALE))),
selected_row, 0);
db.UpdateFavoriteColumn(selection.ToStdString(), 0);
db.UpdateFavoriteFolder(selection.ToStdString(), m_CollectionView->GetItemText(favorites_folder).ToStdString());
}
else
{
wxLogDebug("%s not added as favorite, cannot delete.", selection);
}
} }
} }
else else
@ -916,23 +1118,193 @@ void MainFrame::OnShowSampleListViewContextMenu(wxDataViewEvent& event)
wxDataViewItemArray items; wxDataViewItemArray items;
int rows = m_SampleListView->GetSelections(items); int rows = m_SampleListView->GetSelections(items);
std::deque<wxDataViewItem> nodes;
nodes.push_back(m_CollectionView->GetNthChild(wxDataViewItem(wxNullPtr), container_row));
wxDataViewItem found_item;
wxFileDataObject file_data;
wxArrayString files;
wxString name;
for (int i = 0; i < rows; i++) for (int i = 0; i < rows; i++)
{ {
int row = m_SampleListView->ItemToRow(items[i]); int item_row = m_SampleListView->ItemToRow(items[i]);
if (m_SampleListView->GetToggleValue(row, 0)) name = m_SampleListView->GetTextValue(item_row, 1);
file_data.AddFile(name.BeforeLast('.'));
files = file_data.GetFilenames();
// if (m_SampleListView->GetToggleValue(row, 0))
// {
// m_SampleListView->SetToggleValue(false, row, 0);
// msg = wxString::Format("Toggle: false");
// }
// else
// {
// m_SampleListView->SetToggleValue(true, row, 0);
// msg = wxString::Format("Toggle: true");
// }
if(db.GetFavoriteColumnValueByFilename(files[i].ToStdString()) == 0)
{ {
m_SampleListView->SetToggleValue(false, row, 0); wxLogDebug("Column matches.. looking!");
msg = wxString::Format("Toggle: false"); while(!nodes.empty())
{
wxDataViewItem current_item = nodes.front();
nodes.pop_front();
if (m_CollectionView->GetItemText(current_item) == files[i])
{
found_item = current_item;
wxLogDebug(m_CollectionView->GetItemText(current_item));
break;
}
wxLogDebug("Current item: %s", m_CollectionView->GetItemText(current_item));
while(current_item.IsOk())
{
wxDataViewItem child;
int child_count = m_CollectionView->GetChildCount(current_item);
int container_count = m_CollectionView->GetChildCount(wxDataViewItem(wxNullPtr));
if(row >= child_count)
{
container_row++;
row = 0;
if(container_row >= container_count)
break;
current_item = m_CollectionView->GetNthChild(wxDataViewItem(wxNullPtr), container_row);
wxLogDebug("Inside.. Current item: %s", m_CollectionView->GetItemText(current_item));
continue;
}
child = m_CollectionView->GetNthChild(current_item, row);
wxLogDebug("Child item: %s", m_CollectionView->GetItemText(child));
nodes.push_back(child);
row++;
}
}
nodes.clear();
if (found_item.IsOk())
{
wxString msg = wxString::Format("%s already added as favorite.", files[i]);
wxMessageDialog msgDialog(NULL, msg, "Info", wxOK | wxICON_INFORMATION);
msgDialog.ShowModal();
}
else
{
wxLogDebug("Sample not found adding as fav.");
wxDataViewItem selected = m_CollectionView->GetSelection();
wxString folder;
if(selected.IsOk() && m_CollectionView->IsContainer(selected))
{
folder = m_CollectionView->GetItemText(selected);
m_CollectionView->AppendItem(selected, files[i]);
}
else
{
folder = m_CollectionView->GetItemText(favorites_folder);
m_CollectionView->AppendItem(favorites_folder, files[i]);
}
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_COLOURED))),
item_row, 0);
db.UpdateFavoriteColumn(files[i].ToStdString(), 1);
db.UpdateFavoriteFolder(files[i].ToStdString(), folder.ToStdString());
wxLogDebug("Adding %s to folder: %s", files[i], folder);
}
} }
else else if(db.GetFavoriteColumnValueByFilename(files[i].ToStdString()) == 1)
{ {
m_SampleListView->SetToggleValue(true, row, 0); wxString folder_name = db.GetFavoriteFolderByFilename(files[i].ToStdString());
msg = wxString::Format("Toggle: true");
while(!nodes.empty())
{
wxDataViewItem current_item = nodes.front();
nodes.pop_front();
wxLogDebug("%s folder name is: %s", files[i], folder_name);
if (m_CollectionView->GetItemText(current_item) == folder_name)
{
found_item = current_item;
wxLogDebug("Found folder: %s", m_CollectionView->GetItemText(found_item));
}
wxLogDebug("Current item: %s", m_CollectionView->GetItemText(current_item));
while(current_item.IsOk())
{
wxDataViewItem child;
int child_count = m_CollectionView->GetChildCount(current_item);
int container_count = m_CollectionView->GetChildCount(wxDataViewItem(wxNullPtr));
if(row >= child_count)
{
container_row++;
row = 0;
if(container_row >= container_count)
break;
current_item = m_CollectionView->GetNthChild(wxDataViewItem(wxNullPtr), container_row);
wxLogDebug("Inside.. Current item: %s", m_CollectionView->GetItemText(current_item));
continue;
}
child = m_CollectionView->GetNthChild(current_item, row);
wxLogDebug("Child item: %s", m_CollectionView->GetItemText(child));
if (m_CollectionView->GetItemText(child) == files[i])
{
found_item = child;
wxLogDebug("Will delete %s", m_CollectionView->GetItemText(found_item));
break;
}
nodes.push_back(child);
row++;
}
}
nodes.clear();
if (found_item.IsOk())
{
wxLogDebug("Folder: %s :: Child: %s", folder_name, m_CollectionView->GetItemText(found_item));
m_CollectionView->DeleteItem(found_item);
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_GREYSCALE))),
item_row, 0);
db.UpdateFavoriteColumn(files[i].ToStdString(), 0);
db.UpdateFavoriteFolder(files[i].ToStdString(), m_CollectionView->GetItemText(favorites_folder).ToStdString());
}
else
{
wxLogDebug("%s not added as favorite, cannot delete.", files[i]);
}
} }
} }
} }
break; break;
}
case MN_DeleteSample: case MN_DeleteSample:
{ {
wxDataViewItemArray items; wxDataViewItemArray items;
@ -1015,9 +1387,14 @@ void MainFrame::OnShowSampleListViewContextMenu(wxDataViewEvent& event)
if (m_SampleListView->GetSelectedItemsCount() <= 1) if (m_SampleListView->GetSelectedItemsCount() <= 1)
{ {
msg = "Trashing.."; msg = "Trashing..";
if (m_SampleListView->GetToggleValue(selected_row, 0)) if(db.GetFavoriteColumnValueByFilename(selection.ToStdString()))
// if (m_SampleListView->GetToggleValue(selected_row, 0))
{ {
m_SampleListView->SetToggleValue(false, selected_row, 0); // m_SampleListView->SetToggleValue(false, selected_row, 0);
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_GREYSCALE))),
selected_row, 0);
db.UpdateFavoriteColumn(filename, 0); db.UpdateFavoriteColumn(filename, 0);
} }
db.UpdateTrashColumn(filename, 1); db.UpdateTrashColumn(filename, 1);
@ -1029,23 +1406,35 @@ void MainFrame::OnShowSampleListViewContextMenu(wxDataViewEvent& event)
wxDataViewItemArray items; wxDataViewItemArray items;
int rows = m_SampleListView->GetSelections(items); int rows = m_SampleListView->GetSelections(items);
wxString name;
wxFileDataObject file_data;
wxArrayString files;
for (int i = 0; i < rows; i++) for (int i = 0; i < rows; i++)
{ {
int row = m_SampleListView->ItemToRow(items[i]); int item_row = m_SampleListView->ItemToRow(items[i]);
wxString text_value = m_SampleListView->GetTextValue(row, 1); wxString text_value = m_SampleListView->GetTextValue(item_row, 1);
std::string multi_selection = text_value.Contains(wxString::Format(".%s", extension)) ? std::string multi_selection = text_value.Contains(wxString::Format(".%s", extension)) ?
text_value.BeforeLast('.').ToStdString() : text_value.ToStdString() ; text_value.BeforeLast('.').ToStdString() : text_value.ToStdString() ;
if (m_SampleListView->GetToggleValue(row, 0)) file_data.AddFile(multi_selection);
files = file_data.GetFilenames();
// if (m_SampleListView->GetToggleValue(row, 0))
if(db.GetFavoriteColumnValueByFilename(files[i].ToStdString()))
{ {
m_SampleListView->SetToggleValue(false, row, 0); // m_SampleListView->SetToggleValue(false, row, 0);
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_GREYSCALE))),
item_row, 0);
db.UpdateFavoriteColumn(multi_selection, 0); db.UpdateFavoriteColumn(multi_selection, 0);
} }
db.UpdateTrashColumn(multi_selection, 1); db.UpdateTrashColumn(multi_selection, 1);
m_TrashedItems->AppendItem(trash_root_node, multi_selection); m_TrashedItems->AppendItem(trash_root_node, multi_selection);
m_SampleListView->DeleteItem(row); m_SampleListView->DeleteItem(item_row);
} }
} }
} }
@ -1116,6 +1505,16 @@ void MainFrame::OnCheckFavorite(wxDataViewEvent& event)
Database db(*m_InfoBar); Database db(*m_InfoBar);
Serializer serialize(m_ConfigFilepath); Serializer serialize(m_ConfigFilepath);
wxDataViewColumn* column = m_SampleListView->GetCurrentColumn();
if(!column)
{
wxLogDebug("Column not found");
return;
}
wxLogDebug("Current column: %s", column->GetTitle());
int selected_row = m_SampleListView->ItemToRow(event.GetItem()); int selected_row = m_SampleListView->ItemToRow(event.GetItem());
int row = 0, container_row = 0; int row = 0, container_row = 0;
@ -1135,8 +1534,9 @@ void MainFrame::OnCheckFavorite(wxDataViewEvent& event)
// wxTreeItemId found_item; // wxTreeItemId found_item;
wxDataViewItem found_item; wxDataViewItem found_item;
if (m_SampleListView->GetToggleValue(selected_row, 0)) if(column->GetTitle() == "Favorite" && db.GetFavoriteColumnValueByFilename(selection.ToStdString()) == 0)
{ {
wxLogDebug("Column matches.. looking!");
while(!nodes.empty()) while(!nodes.empty())
{ {
// wxTreeItemId current_item = nodes.front(); // wxTreeItemId current_item = nodes.front();
@ -1219,6 +1619,12 @@ void MainFrame::OnCheckFavorite(wxDataViewEvent& event)
// db.UpdateFavoriteFolder(selection.ToStdString(), folder.ToStdString()); // db.UpdateFavoriteFolder(selection.ToStdString(), folder.ToStdString());
} }
// column->SetBitmap(wxBitmap(ICON_GREYSCALE));
// icon << wxDataViewIconText(wxEmptyString, wxIcon(ICON_GREYSCALE));
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_COLOURED))),
selected_row, 0);
db.UpdateFavoriteColumn(selection.ToStdString(), 1); db.UpdateFavoriteColumn(selection.ToStdString(), 1);
db.UpdateFavoriteFolder(selection.ToStdString(), folder.ToStdString()); db.UpdateFavoriteFolder(selection.ToStdString(), folder.ToStdString());
@ -1226,7 +1632,7 @@ void MainFrame::OnCheckFavorite(wxDataViewEvent& event)
// serialize.SerializeDataViewTreeCtrlItems(*m_CollectionView, rootNode); // serialize.SerializeDataViewTreeCtrlItems(*m_CollectionView, rootNode);
} }
} }
else else if(column->GetTitle() == "Favorite" && db.GetFavoriteColumnValueByFilename(selection.ToStdString()) == 1)
{ {
wxString folder_name = db.GetFavoriteFolderByFilename(selection.ToStdString()); wxString folder_name = db.GetFavoriteFolderByFilename(selection.ToStdString());
@ -1310,6 +1716,12 @@ void MainFrame::OnCheckFavorite(wxDataViewEvent& event)
// } // }
m_CollectionView->DeleteItem(found_item); m_CollectionView->DeleteItem(found_item);
m_SampleListView->SetValue(wxVariant(wxDataViewIconText(wxEmptyString, wxIcon(ICON_GREYSCALE))),
selected_row, 0);
db.UpdateFavoriteColumn(selection.ToStdString(), 0);
db.UpdateFavoriteFolder(selection.ToStdString(), m_CollectionView->GetItemText(favorites_folder).ToStdString());
// wxLogDebug("Found %s folder name is: %s", selection, folder_name); // wxLogDebug("Found %s folder name is: %s", selection, folder_name);
// wxMessageBox("// TODO", "Delete sample", wxOK | wxCENTER, this, wxDefaultCoord, wxDefaultCoord); // wxMessageBox("// TODO", "Delete sample", wxOK | wxCENTER, this, wxDefaultCoord, wxDefaultCoord);
} }
@ -1607,7 +2019,7 @@ void MainFrame::LoadConfigFile()
this->SetFont(settings.GetFontType()); this->SetFont(settings.GetFontType());
this->SetSize(width, height); this->SetSize(width, height);
this->CenterOnScreen(wxBOTH); this->CenterOnScreen(wxBOTH);
this->SetIcon(wxIcon("../assets/icons/icon-hive_24x24.png", wxICON_DEFAULT_TYPE, -1, -1)); this->SetIcon(wxIcon(ICON_APP, wxICON_DEFAULT_TYPE, -1, -1));
} }
void MainFrame::RefreshDatabase() void MainFrame::RefreshDatabase()