feat: adds 4 new favorite views, color coded and toggleable with menu options

CTRL+F1-F5 toggles favorites for the different lists.
This commit is contained in:
lantzelot-swe 2021-04-04 23:28:40 +02:00
parent 1640b8d7b8
commit 6a057a7cb4
9 changed files with 567 additions and 52 deletions

View File

@ -1005,9 +1005,9 @@ public class DbConnector
}
}
public void toggleFavorite(String gameId, int currentFavoriteValue)
public void toggleFavorite(String gameId, int currentFavoriteValue, int newFavorite)
{
int newValue = currentFavoriteValue == 0 ? 1 : 0;
int newValue = currentFavoriteValue == newFavorite ? 0: newFavorite;
String sql = "UPDATE gameinfo SET Favorite = " + newValue + " WHERE rowId = " + gameId + ";";
try (Connection conn = this.connect(); PreparedStatement favoritestmt = conn.prepareStatement(sql))
{
@ -1020,9 +1020,9 @@ public class DbConnector
}
}
public void clearFavorites()
public void clearFavorites(int favoriteNumber)
{
String sql = "UPDATE gameinfo SET Favorite = 0 where Favorite = 1;";
String sql = "UPDATE gameinfo SET Favorite = 0 where Favorite = " + favoriteNumber + ";";
try (Connection conn = this.connect(); PreparedStatement favoritestmt = conn.prepareStatement(sql))
{
int value = favoritestmt.executeUpdate();

View File

@ -1,5 +1,6 @@
package se.lantz.gui;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
@ -7,11 +8,28 @@ import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import se.lantz.model.data.GameListData;
import se.lantz.model.data.GameView;
public class GameListDataRenderer extends DefaultListCellRenderer
{
private Color fav1Color = Color.BLACK;
private Color fav1ColorSelected = Color.WHITE;
//Orange
private Color fav2Color = new Color(255, 106, 0);
private Color fav2ColorSelected = new Color(255, 163, 132);
//Blue
private Color fav3Color = new Color(0, 38, 255);
private Color fav3ColorSelected = new Color(186, 202, 255);
//Red
private Color fav4Color = Color.RED;
private Color fav4ColorSelected = Color.PINK;
//Green
private Color fav5Color = Color.GREEN.darker();
private Color fav5ColorSelected = Color.GREEN;
private final Font bold;
private final Font plain;
public GameListDataRenderer()
{
this.plain = getFont().deriveFont(Font.PLAIN);
@ -25,16 +43,85 @@ public class GameListDataRenderer extends DefaultListCellRenderer
boolean isSelected,
boolean cellHasFocus)
{
Component listCellRendererComponent = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
GameListData listData = (GameListData)value;
Component listCellRendererComponent =
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof GameListData)
{
handleGameListData(value, isSelected);
}
else
{
handleGameListView(value, isSelected);
}
return listCellRendererComponent;
}
private void handleGameListData(Object value, boolean isSelected)
{
GameListData listData = (GameListData) value;
if (listData.isFavorite())
{
this.setFont(bold);
switch (listData.getFavoriteNumber())
{
case 1:
this.setForeground(isSelected ? fav1ColorSelected : fav1Color);
break;
case 2:
this.setForeground(isSelected ? fav2ColorSelected : fav2Color);
break;
case 3:
this.setForeground(isSelected ? fav3ColorSelected : fav3Color);
break;
case 4:
this.setForeground(isSelected ? fav4ColorSelected : fav4Color);
break;
case 5:
this.setForeground(isSelected ? fav5ColorSelected : fav5Color);
break;
default:
break;
}
}
else
{
this.setFont(plain);
}
return listCellRendererComponent;
}
private void handleGameListView(Object value, boolean isSelected)
{
GameView view = (GameView) value;
if (view.getGameViewId() == GameView.FAVORITES_ID)
{
this.setFont(bold);
this.setForeground(isSelected ? fav1ColorSelected : fav1Color);
}
else if (view.getGameViewId() == GameView.FAVORITES_2_ID)
{
this.setFont(bold);
this.setForeground(isSelected ? fav2ColorSelected : fav2Color);
}
else if (view.getGameViewId() == GameView.FAVORITES_3_ID)
{
this.setFont(bold);
this.setForeground(isSelected ? fav3ColorSelected : fav3Color);
}
else if (view.getGameViewId() == GameView.FAVORITES_4_ID)
{
this.setFont(bold);
this.setForeground(isSelected ? fav4ColorSelected : fav4Color);
}
else if (view.getGameViewId() == GameView.FAVORITES_5_ID)
{
this.setFont(bold);
this.setForeground(isSelected ? fav5ColorSelected : fav5Color);
}
else
{
this.setFont(plain);
this.setForeground(isSelected ? fav1ColorSelected : fav1Color);
}
}
}

View File

@ -23,6 +23,7 @@ import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
import se.lantz.gui.gameview.GameViewManager;
import se.lantz.model.MainViewModel;
@ -166,6 +167,7 @@ public class ListPanel extends JPanel
}
});
listViewComboBox.setModel(uiModel.getGameViewModel());
listViewComboBox.setRenderer(new GameListDataRenderer());
}
return listViewComboBox;
}
@ -401,6 +403,8 @@ public class ListPanel extends JPanel
});
list.setModel(uiModel.getGameListModel());
list.setCellRenderer(new GameListDataRenderer());
//Remove from tootlipManager to avoid throwing a nullpointer for CTRL+F1
ToolTipManager.sharedInstance().unregisterComponent(list);
}
return list;
}
@ -446,6 +450,56 @@ public class ListPanel extends JPanel
mainPanel.repaintAfterModifications();
}
}
public void toggleFavorite2()
{
if (!uiModel.isDataChanged())
{
for (GameListData glData : list.getSelectedValuesList())
{
uiModel.toggleFavorite2(glData);
}
mainPanel.repaintAfterModifications();
}
}
public void toggleFavorite3()
{
if (!uiModel.isDataChanged())
{
for (GameListData glData : list.getSelectedValuesList())
{
uiModel.toggleFavorite3(glData);
}
mainPanel.repaintAfterModifications();
}
}
public void toggleFavorite4()
{
if (!uiModel.isDataChanged())
{
for (GameListData glData : list.getSelectedValuesList())
{
uiModel.toggleFavorite4(glData);
}
mainPanel.repaintAfterModifications();
}
}
public void toggleFavorite5()
{
if (!uiModel.isDataChanged())
{
for (GameListData glData : list.getSelectedValuesList())
{
uiModel.toggleFavorite5(glData);
}
mainPanel.repaintAfterModifications();
}
}
public void reloadCurrentGameView()
{

View File

@ -1,11 +1,17 @@
package se.lantz.gui;
import java.awt.BorderLayout;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.List;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.KeyStroke;
import javax.swing.ToolTipManager;
import se.lantz.model.MainViewModel;
import se.lantz.model.data.GameListData;
@ -172,6 +178,26 @@ public class MainPanel extends JPanel
getListPanel().toggleFavorite();
}
public void toggleFavorite2()
{
getListPanel().toggleFavorite2();
}
public void toggleFavorite3()
{
getListPanel().toggleFavorite3();
}
public void toggleFavorite4()
{
getListPanel().toggleFavorite4();
}
public void toggleFavorite5()
{
getListPanel().toggleFavorite5();
}
public void runCurrentGame()
{
if (getListPanel().isSingleGameSelected() && getListPanel().getSelectedIndexInList() > -1)

View File

@ -7,10 +7,8 @@ import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import se.lantz.gui.scraper.MobyGamesOptionsPanel;
import se.lantz.model.MainViewModel;
import se.lantz.util.FileManager;
@ -25,12 +23,12 @@ public final class MainWindow extends JFrame
private JMenuBar menuBar;
private final MainViewModel uiModel;
private final MenuManager menuManager;
private static MainWindow instance = null;
private Cursor waitCursor = new Cursor(Cursor.WAIT_CURSOR);
private Cursor defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR);
public static MainWindow getInstance()
{
if (instance == null)
@ -39,11 +37,11 @@ public final class MainWindow extends JFrame
}
return instance;
}
public static boolean isInitialized() {
public static boolean isInitialized()
{
return instance != null;
}
private MainWindow()
{
@ -52,7 +50,7 @@ public final class MainWindow extends JFrame
uiModel = new MainViewModel();
menuManager = new MenuManager(uiModel, this);
this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent e)
@ -62,9 +60,8 @@ public final class MainWindow extends JFrame
});
getContentPane().add(getMainPanel(), BorderLayout.CENTER);
this.setJMenuBar(getMainMenuBar());
//Update title with version if available
String versionValue = FileManager.getPcuVersionFromManifest();
if (!versionValue.isEmpty())
@ -72,7 +69,7 @@ public final class MainWindow extends JFrame
setTitle("PCU Game Manager v." + versionValue);
}
}
public void initialize()
{
getMainPanel().initialize();
@ -100,22 +97,22 @@ public final class MainWindow extends JFrame
}
return menuBar;
}
public void reloadCurrentGameView()
{
getMainPanel().reloadCurrentGameView();
}
public void repaintAfterModifications()
{
getMainPanel().repaintAfterModifications();
}
public void selectViewAfterRestore()
{
getMainPanel().selectViewAfterRestore();
}
public void setWaitCursor(boolean wait)
{
if (wait)

View File

@ -59,8 +59,16 @@ public class MenuManager
private JMenuItem exportItem;
private JMenuItem refreshItem;
private JMenuItem toggleFavoriteItem;
private JMenuItem clearFavoritesItem;
private JMenuItem toggleFavorite1Item;
private JMenuItem toggleFavorite2Item;
private JMenuItem toggleFavorite3Item;
private JMenuItem toggleFavorite4Item;
private JMenuItem toggleFavorite5Item;
private JMenuItem clearFavorites1Item;
private JMenuItem clearFavorites2Item;
private JMenuItem clearFavorites3Item;
private JMenuItem clearFavorites4Item;
private JMenuItem clearFavorites5Item;
private JMenuItem backupDbItem;
private JMenuItem restoreDbItem;
@ -118,8 +126,17 @@ public class MenuManager
fileMenu.addSeparator();
fileMenu.add(getExitItem());
editMenu = new JMenu("Edit");
editMenu.add(getToggleFavoriteItem());
editMenu.add(getClearFavoritesItem());
editMenu.add(getToggleFavorite1Item());
editMenu.add(getToggleFavorite2Item());
editMenu.add(getToggleFavorite3Item());
editMenu.add(getToggleFavorite4Item());
editMenu.add(getToggleFavorite5Item());
editMenu.addSeparator();
editMenu.add(getClearFavorites1Item());
editMenu.add(getClearFavorites2Item());
editMenu.add(getClearFavorites3Item());
editMenu.add(getClearFavorites4Item());
editMenu.add(getClearFavorites5Item());
toolsMenu = new JMenu("Tools");
toolsMenu.add(getBackupDbItem());
toolsMenu.add(getRestoreDbItem());
@ -142,7 +159,7 @@ public class MenuManager
importCarouselItem.setEnabled(okToEnable);
importGamebaseItem.setEnabled(okToEnable);
exportItem.setEnabled(okToEnable);
toggleFavoriteItem.setEnabled(okToEnable);
toggleFavorite1Item.setEnabled(okToEnable);
runGameItem.setEnabled(!uiModel.getInfoModel().getGamesFile().isEmpty());
refreshItem.setEnabled(okToEnable);
});
@ -276,26 +293,109 @@ public class MenuManager
return exitItem;
}
private JMenuItem getToggleFavoriteItem()
private JMenuItem getToggleFavorite1Item()
{
toggleFavoriteItem = new JMenuItem("Add/remove from favorites");
KeyStroke keyStrokeToToggleFav = KeyStroke.getKeyStroke(KeyEvent.VK_F12, InputEvent.CTRL_DOWN_MASK);
toggleFavoriteItem.setAccelerator(keyStrokeToToggleFav);
toggleFavoriteItem.setMnemonic('F');
toggleFavoriteItem.addActionListener(e -> {
toggleFavorite1Item = new JMenuItem("Add/remove from favorites 1");
KeyStroke keyStrokeToToggleFav = KeyStroke.getKeyStroke(KeyEvent.VK_F1, InputEvent.CTRL_DOWN_MASK);
toggleFavorite1Item.setAccelerator(keyStrokeToToggleFav);
toggleFavorite1Item.setMnemonic('1');
toggleFavorite1Item.addActionListener(e -> {
mainWindow.getMainPanel().toggleFavorite();
});
return toggleFavoriteItem;
return toggleFavorite1Item;
}
private JMenuItem getToggleFavorite2Item()
{
toggleFavorite2Item = new JMenuItem("Add/remove from favorites 2");
KeyStroke keyStrokeToToggleFav = KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.CTRL_DOWN_MASK);
toggleFavorite2Item.setAccelerator(keyStrokeToToggleFav);
toggleFavorite2Item.setMnemonic('2');
toggleFavorite2Item.addActionListener(e -> {
mainWindow.getMainPanel().toggleFavorite2();
});
return toggleFavorite2Item;
}
private JMenuItem getToggleFavorite3Item()
{
toggleFavorite3Item = new JMenuItem("Add/remove from favorites 3");
KeyStroke keyStrokeToToggleFav = KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.CTRL_DOWN_MASK);
toggleFavorite3Item.setAccelerator(keyStrokeToToggleFav);
toggleFavorite3Item.setMnemonic('3');
toggleFavorite3Item.addActionListener(e -> {
mainWindow.getMainPanel().toggleFavorite3();
});
return toggleFavorite3Item;
}
private JMenuItem getToggleFavorite4Item()
{
toggleFavorite4Item = new JMenuItem("Add/remove from favorites 4");
KeyStroke keyStrokeToToggleFav = KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.CTRL_DOWN_MASK);
toggleFavorite4Item.setAccelerator(keyStrokeToToggleFav);
toggleFavorite4Item.setMnemonic('4');
toggleFavorite4Item.addActionListener(e -> {
mainWindow.getMainPanel().toggleFavorite4();
});
return toggleFavorite4Item;
}
private JMenuItem getToggleFavorite5Item()
{
toggleFavorite5Item = new JMenuItem("Add/remove from favorites 5");
KeyStroke keyStrokeToToggleFav = KeyStroke.getKeyStroke(KeyEvent.VK_F5, InputEvent.CTRL_DOWN_MASK);
toggleFavorite5Item.setAccelerator(keyStrokeToToggleFav);
toggleFavorite5Item.setMnemonic('5');
toggleFavorite5Item.addActionListener(e -> {
mainWindow.getMainPanel().toggleFavorite5();
});
return toggleFavorite5Item;
}
private JMenuItem getClearFavoritesItem()
private JMenuItem getClearFavorites1Item()
{
clearFavoritesItem = new JMenuItem("Clear all favorites");
clearFavoritesItem.setMnemonic('C');
clearFavoritesItem.addActionListener(e -> {
clearFavorites1Item = new JMenuItem("Clear favorites 1");
clearFavorites1Item.addActionListener(e -> {
clearFavorites();
});
return clearFavoritesItem;
return clearFavorites1Item;
}
private JMenuItem getClearFavorites2Item()
{
clearFavorites2Item = new JMenuItem("Clear favorites 2");
clearFavorites2Item.addActionListener(e -> {
clearFavorites2();
});
return clearFavorites2Item;
}
private JMenuItem getClearFavorites3Item()
{
clearFavorites3Item = new JMenuItem("Clear favorites 3");
clearFavorites3Item.addActionListener(e -> {
clearFavorites3();
});
return clearFavorites3Item;
}
private JMenuItem getClearFavorites4Item()
{
clearFavorites4Item = new JMenuItem("Clear favorites 4");
clearFavorites4Item.addActionListener(e -> {
clearFavorites4();
});
return clearFavorites4Item;
}
private JMenuItem getClearFavorites5Item()
{
clearFavorites5Item = new JMenuItem("Clear favorites 5");
clearFavorites5Item.addActionListener(e -> {
clearFavorites5();
});
return clearFavorites5Item;
}
private JMenuItem getBackupDbItem()
@ -537,12 +637,56 @@ public class MenuManager
private void clearFavorites()
{
String message = "Are you sure you want to clear all games marked as favorites?";
String message = "Are you sure you want to clear all games marked as favorites 1?";
int option = JOptionPane.showConfirmDialog(MainWindow.getInstance()
.getMainPanel(), message, "Clear all favorites", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
.getMainPanel(), message, "Clear all favorites 1", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (option == JOptionPane.YES_OPTION)
{
uiModel.clearFavorites();
uiModel.clearFavorites(1);
}
}
private void clearFavorites2()
{
String message = "Are you sure you want to clear all games marked as favorites 2?";
int option = JOptionPane.showConfirmDialog(MainWindow.getInstance()
.getMainPanel(), message, "Clear all favorites 2", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (option == JOptionPane.YES_OPTION)
{
uiModel.clearFavorites(2);
}
}
private void clearFavorites3()
{
String message = "Are you sure you want to clear all games marked as favorites 3?";
int option = JOptionPane.showConfirmDialog(MainWindow.getInstance()
.getMainPanel(), message, "Clear all favorites 3", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (option == JOptionPane.YES_OPTION)
{
uiModel.clearFavorites(3);
}
}
private void clearFavorites4()
{
String message = "Are you sure you want to clear all games marked as favorites 4?";
int option = JOptionPane.showConfirmDialog(MainWindow.getInstance()
.getMainPanel(), message, "Clear all favorites 4", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (option == JOptionPane.YES_OPTION)
{
uiModel.clearFavorites(4);
}
}
private void clearFavorites5()
{
String message = "Are you sure you want to clear all games marked as favorites 5?";
int option = JOptionPane.showConfirmDialog(MainWindow.getInstance()
.getMainPanel(), message, "Clear all favorites 5", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (option == JOptionPane.YES_OPTION)
{
uiModel.clearFavorites(5);
}
}

View File

@ -36,8 +36,16 @@ public class MainViewModel extends AbstractModel
private GameView selectedGameView;
private int allGamesCount = 0;
private int favoritesCount = 0;
private int favorites2Count = 0;
private int favorites3Count = 0;
private int favorites4Count = 0;
private int favorites5Count = 0;
private GameView allGameView;
private GameView favoritesView;
private GameView favorites2View;
private GameView favorites3View;
private GameView favorites4View;
private GameView favorites5View;
private InfoModel infoModel = new InfoModel();
private JoystickModel joy1Model = new JoystickModel(true);
@ -102,13 +110,33 @@ public class MainViewModel extends AbstractModel
allGameView.setSqlQuery("");
selectedGameView = allGameView;
//Add favorites view
//Add favorites views
favoritesView = new GameView(GameView.FAVORITES_ID);
favoritesView.setName("Favorites");
favoritesView.setName("Favorites 1");
favoritesView.setSqlQuery(" WHERE Favorite = 1");
favorites2View = new GameView(GameView.FAVORITES_2_ID);
favorites2View.setName("Favorites 2");
favorites2View.setSqlQuery(" WHERE Favorite = 2");
favorites3View = new GameView(GameView.FAVORITES_3_ID);
favorites3View.setName("Favorites 3");
favorites3View.setSqlQuery(" WHERE Favorite = 3");
favorites4View = new GameView(GameView.FAVORITES_4_ID);
favorites4View.setName("Favorites 4");
favorites4View.setSqlQuery(" WHERE Favorite = 4");
favorites5View = new GameView(GameView.FAVORITES_5_ID);
favorites5View.setName("Favorites 5");
favorites5View.setSqlQuery(" WHERE Favorite = 5");
gameViewModel.addElement(allGameView);
gameViewModel.addElement(favoritesView);
gameViewModel.addElement(favorites2View);
gameViewModel.addElement(favorites3View);
gameViewModel.addElement(favorites4View);
gameViewModel.addElement(favorites5View);
List<GameView> gameViewList = dbConnector.loadGameViews();
Collections.sort(gameViewList);
@ -259,14 +287,41 @@ public class MainViewModel extends AbstractModel
this.allGamesCount = gamesList.size();
//Update favorites count
favoritesCount = 0;
favorites2Count = 0;
favorites3Count = 0;
favorites4Count = 0;
favorites5Count = 0;
for (GameListData gameListData : gamesList)
{
if (gameListData.isFavorite())
{
favoritesCount++;
switch (gameListData.getFavoriteNumber())
{
case 1:
favoritesCount++;
break;
case 2:
favorites2Count++;
break;
case 3:
favorites3Count++;
break;
case 4:
favorites4Count++;
break;
case 5:
favorites5Count++;
break;
default:
break;
}
}
}
favoritesView.setGameCount(favoritesCount);
favorites2View.setGameCount(favorites2Count);
favorites3View.setGameCount(favorites3Count);
favorites4View.setGameCount(favorites4Count);
favorites5View.setGameCount(favorites5Count);
}
this.disableChangeNotification(false);
logger.debug("...done.");
@ -391,6 +446,26 @@ public class MainViewModel extends AbstractModel
//Mark as favorites
toggleFavorite(selectedData);
}
else if (getSelectedGameView().getGameViewId() == GameView.FAVORITES_2_ID)
{
//Mark as favorites
toggleFavorite2(selectedData);
}
else if (getSelectedGameView().getGameViewId() == GameView.FAVORITES_3_ID)
{
//Mark as favorites
toggleFavorite3(selectedData);
}
else if (getSelectedGameView().getGameViewId() == GameView.FAVORITES_4_ID)
{
//Mark as favorites
toggleFavorite4(selectedData);
}
else if (getSelectedGameView().getGameViewId() == GameView.FAVORITES_5_ID)
{
//Mark as favorites
toggleFavorite5(selectedData);
}
}
else
{
@ -474,9 +549,9 @@ public class MainViewModel extends AbstractModel
}
}
public void clearFavorites()
public void clearFavorites(int number)
{
dbConnector.clearFavorites();
dbConnector.clearFavorites(number);
//Reload the current view
reloadCurrentGameView();
}
@ -525,16 +600,42 @@ public class MainViewModel extends AbstractModel
resetDataChanged();
}
}
private void reduceFavoriteCount(int previousFavorite)
{
switch (previousFavorite)
{
case 1:
favoritesView.setGameCount(--favoritesCount);
break;
case 2:
favorites2View.setGameCount(--favorites2Count);
break;
case 3:
favorites3View.setGameCount(--favorites3Count);
break;
case 4:
favorites4View.setGameCount(--favorites4Count);
break;
case 5:
favorites5View.setGameCount(--favorites5Count);
break;
default:
break;
}
}
public void toggleFavorite(GameListData data)
{
if (data != null && !data.getGameId().isEmpty())
{
dbConnector.toggleFavorite(data.getGameId(), data.getFavorite());
int previousFavorite = data.getFavorite();
dbConnector.toggleFavorite(data.getGameId(), previousFavorite, 1);
data.toggleFavorite();
if (data.isFavorite())
{
favoritesView.setGameCount(++favoritesCount);
reduceFavoriteCount(previousFavorite);
}
else
{
@ -543,6 +644,86 @@ public class MainViewModel extends AbstractModel
gameListModel.notifyChange();
}
}
public void toggleFavorite2(GameListData data)
{
if (data != null && !data.getGameId().isEmpty())
{
int previousFavorite = data.getFavorite();
dbConnector.toggleFavorite(data.getGameId(), previousFavorite, 2);
data.toggleFavorite2();
if (data.isFavorite())
{
favorites2View.setGameCount(++favorites2Count);
reduceFavoriteCount(previousFavorite);
}
else
{
favorites2View.setGameCount(--favorites2Count);
}
gameListModel.notifyChange();
}
}
public void toggleFavorite3(GameListData data)
{
if (data != null && !data.getGameId().isEmpty())
{
int previousFavorite = data.getFavorite();
dbConnector.toggleFavorite(data.getGameId(), previousFavorite, 3);
data.toggleFavorite3();
if (data.isFavorite())
{
favorites3View.setGameCount(++favorites3Count);
reduceFavoriteCount(previousFavorite);
}
else
{
favorites3View.setGameCount(--favorites3Count);
}
gameListModel.notifyChange();
}
}
public void toggleFavorite4(GameListData data)
{
if (data != null && !data.getGameId().isEmpty())
{
int previousFavorite = data.getFavorite();
dbConnector.toggleFavorite(data.getGameId(), previousFavorite, 4);
data.toggleFavorite4();
if (data.isFavorite())
{
favorites4View.setGameCount(++favorites4Count);
reduceFavoriteCount(previousFavorite);
}
else
{
favorites4View.setGameCount(--favorites4Count);
}
gameListModel.notifyChange();
}
}
public void toggleFavorite5(GameListData data)
{
if (data != null && !data.getGameId().isEmpty())
{
int previousFavorite = data.getFavorite();
dbConnector.toggleFavorite(data.getGameId(), previousFavorite, 5);
data.toggleFavorite5();
if (data.isFavorite())
{
favorites5View.setGameCount(++favorites5Count);
reduceFavoriteCount(previousFavorite);
}
else
{
favorites5View.setGameCount(--favorites5Count);
}
gameListModel.notifyChange();
}
}
public void runGameInVice()
{

View File

@ -41,13 +41,35 @@ public class GameListData implements Comparable
public void toggleFavorite()
{
this.favorite = favorite == 0 ? 1 : 0;
this.favorite = favorite == 1 ? 0 : 1;
}
public void toggleFavorite2()
{
this.favorite = favorite == 2 ? 0 : 2;
}
public void toggleFavorite3()
{
this.favorite = favorite == 3 ? 0 : 3;
}
public void toggleFavorite4()
{
this.favorite = favorite == 4 ? 0 : 4;
}
public void toggleFavorite5()
{
this.favorite = favorite == 5 ? 0 : 5;
}
public boolean isFavorite()
{
//For now "1" means favorite and "0 means no favorite. Possible to add support for multiple favorite lists later on.
return favorite == 1;
return favorite > 0;
}
public int getFavoriteNumber()
{
return favorite;
}
public void setFavorite(int favorite)

View File

@ -10,6 +10,10 @@ public class GameView implements Comparable
{
public static final int ALL_GAMES_ID = -1;
public static final int FAVORITES_ID = -2;
public static final int FAVORITES_2_ID = -3;
public static final int FAVORITES_3_ID = -4;
public static final int FAVORITES_4_ID = -5;
public static final int FAVORITES_5_ID = -6;
private static final Logger logger = LoggerFactory.getLogger(GameView.class);
private String name = "";
private List<ViewFilter> viewFilters = new ArrayList<>();