Skip to content

Commit

Permalink
#5127: Migrate MediaBrowser to use the new Favourites manager.
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Dec 27, 2020
1 parent 86ac171 commit 8be6c5e
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 19 deletions.
31 changes: 14 additions & 17 deletions radiant/ui/mediabrowser/MediaBrowser.cpp
Expand Up @@ -9,6 +9,7 @@
#include "ishaders.h"
#include "ishaderclipboard.h"
#include "ieventmanager.h"
#include "ifavourites.h"

#include "wxutil/MultiMonitor.h"

Expand Down Expand Up @@ -136,7 +137,7 @@ struct ShaderNameFunctor
// TreeStore to populate
wxutil::TreeModel& _store;
const MediaBrowser::TreeColumns& _columns;
const MediaBrowser::Favourites& _favourites;
const std::set<std::string>& _favourites;
wxDataViewItem _root;

std::string _otherMaterialsPath;
Expand All @@ -149,7 +150,7 @@ struct ShaderNameFunctor
wxIcon _folderIcon;
wxIcon _textureIcon;

ShaderNameFunctor(wxutil::TreeModel& store, const MediaBrowser::TreeColumns& columns, const MediaBrowser::Favourites& favourites) :
ShaderNameFunctor(wxutil::TreeModel& store, const MediaBrowser::TreeColumns& columns, const std::set<std::string>& favourites) :
_store(store),
_columns(columns),
_favourites(favourites),
Expand Down Expand Up @@ -227,7 +228,7 @@ struct ShaderNameFunctor

std::string leafName = slashPos != std::string::npos ? name.substr(slashPos + 1) : name;

bool isFavourite = _favourites.find(name) != _favourites.end();
bool isFavourite = _favourites.count(name) > 0;

row[_columns.iconAndName] = wxVariant(wxDataViewIconText(leafName, _textureIcon));
row[_columns.leafName] = leafName;
Expand All @@ -254,7 +255,7 @@ class MediaBrowser::Populator :
const MediaBrowser::TreeColumns& _columns;

// The set of favourites
const MediaBrowser::Favourites& _favourites;
std::set<std::string> _favourites;

// The tree store to populate. We must operate on our own tree store, since
// updating the MediaBrowser's tree store from a different thread
Expand Down Expand Up @@ -354,12 +355,13 @@ class MediaBrowser::Populator :
public:

// Construct and initialise variables
Populator(const MediaBrowser::TreeColumns& cols, wxEvtHandler* finishedHandler, const MediaBrowser::Favourites& favourites) :
Populator(const MediaBrowser::TreeColumns& cols, wxEvtHandler* finishedHandler) :
wxThread(wxTHREAD_JOINABLE),
_finishedHandler(finishedHandler),
_columns(cols),
_favourites(favourites)
{}
_columns(cols)
{
_favourites = GlobalFavouritesManager().getFavourites(decl::Type::Material);
}

~Populator()
{
Expand Down Expand Up @@ -396,7 +398,6 @@ MediaBrowser::MediaBrowser() :
_treeView(nullptr),
_treeStore(nullptr),
_mode(TreeMode::ShowAll),
_favourites(new Favourites),
_preview(nullptr),
_isPopulated(false),
_blockShaderClipboardUpdates(false)
Expand Down Expand Up @@ -680,11 +681,8 @@ void MediaBrowser::populate()

row.SendItemAdded();

// Load list from registry
_favourites->loadFromRegistry();

// Start the background thread
_populator.reset(new Populator(_columns, this, *_favourites));
_populator.reset(new Populator(_columns, this));
_populator->populate();
}
}
Expand Down Expand Up @@ -894,11 +892,11 @@ void MediaBrowser::setFavouriteRecursively(wxutil::TreeModel::Row& row, bool isF
// Keep track of this choice
if (isFavourite)
{
_favourites->insert(row[_columns.fullName]);
GlobalFavouritesManager().addFavourite(decl::Type::Material, row[_columns.fullName]);
}
else
{
_favourites->erase(row[_columns.fullName]);
GlobalFavouritesManager().removeFavourite(decl::Type::Material, row[_columns.fullName]);
}

row.SendItemChanged();
Expand Down Expand Up @@ -928,8 +926,7 @@ void MediaBrowser::_onSetFavourite(bool isFavourite)
setFavouriteRecursively(row, isFavourite);

// Store to registry on each change
_favourites->saveToRegistry();

// TODO: ? _favourites->saveToRegistry();
}

void MediaBrowser::_onContextMenu(wxDataViewEvent& ev)
Expand Down
2 changes: 0 additions & 2 deletions radiant/ui/mediabrowser/MediaBrowser.h
Expand Up @@ -84,8 +84,6 @@ class MediaBrowser :
class Populator;
std::unique_ptr<Populator> _populator;

std::unique_ptr<Favourites> _favourites;

// Context menu
wxutil::PopupMenuPtr _popupMenu;

Expand Down

0 comments on commit 8be6c5e

Please sign in to comment.