Author: jflesch
Date: 2007-08-17 20:56:37 +0000 (Fri, 17 Aug 2007)
New Revision: 14771
Modified:
trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/MiniFrostPanel.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/SentMessages.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoard.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKMessage.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoard.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoardFactory.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/interfaces/Board.java
Log:
Display the number of unread messages according to the filtering rules
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java 2007-08-17
20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/BoardTree.java 2007-08-17
20:56:37 UTC (rev 14771)
@@ -175,8 +175,10 @@
protected class BoardListRenderer extends DefaultListCellRenderer {
+ private MessageTreeTable messageTreeTable;
+
public BoardListRenderer() {
-
+ messageTreeTable = mainPanel.getMessageTreeTable();
}
public java.awt.Component getListCellRendererComponent(JList
list, Object value,
@@ -186,16 +188,20 @@
String str = board.toString();
- if (board.getNewMessageNumber() > 0)
- str += "
("+Integer.toString(board.getNewMessageNumber())+")";
+ int unread = 0;
+ if ( (unread =
board.getNewMessageNumber(messageTreeTable.seeUnsigned(),
+
messageTreeTable.seeArchived(),
+
messageTreeTable.getMinTrustLevel())) > 0)
+ str += " ("+Integer.toString(unread)+")";
+
java.awt.Component c =
super.getListCellRendererComponent(list, str,
index, isSelected,
cellHasFocus);
c.setFont(c.getFont().deriveFont((float)13.5));
- if (board.getNewMessageNumber() > 0)
+ if (unread > 0)
c.setFont(c.getFont().deriveFont(Font.BOLD));
else
c.setFont(c.getFont().deriveFont(Font.PLAIN));
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -285,8 +285,6 @@
panel.add(southPanel, BorderLayout.SOUTH);
- mainPanel.getBoardTree().addObserver(this);
-
refresh();
}
@@ -1062,6 +1060,18 @@
}
+ public int getMinTrustLevel() {
+ return minTrustLevelInt;
+ }
+
+ public boolean seeUnsigned() {
+ return seeUnsigned.isSelected();
+ }
+
+ public boolean seeArchived() {
+ return seeArchived.isSelected();
+ }
+
public void actionPerformed(ActionEvent e) {
if (e.getSource() == seeUnsigned
|| e.getSource() == minTrustLevel
@@ -1072,6 +1082,8 @@
minTrustLevelInt =
Identity.getTrustLevel((String)(minTrustLevel.getSelectedItem()));
refresh();
+ mainPanel.getBoardTree().refresh();
+
} else if (e.getSource() == searchButton
|| e.getSource() == searchField) {
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/MiniFrostPanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/MiniFrostPanel.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/MiniFrostPanel.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -47,11 +47,14 @@
this.db = db;
this.pluginCore = pluginCore;
+ /* board tree use some settings provided by the message tree
table
+ * to count the unread messages => it must instanciated after */
+ messageTreeTable = new MessageTreeTable(this);
boardTree = new BoardTree(this);
- messageTreeTable = new MessageTreeTable(this);
messagePanel = new MessagePanel(this);
draftPanel = new DraftPanel(this);
+ boardTree.addObserver(messageTreeTable);
boardTree.addObserver(this);
/* so it will be vertical ... don't ask me why ... */
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/SentMessages.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/SentMessages.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/SentMessages.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -79,7 +79,7 @@
return false;
}
- public int getNewMessageNumber() {
+ public int getNewMessageNumber(boolean unsigned, boolean archived, int
minTrustLevel) {
return 0;
}
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoard.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoard.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoard.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -48,8 +48,6 @@
private boolean refreshing;
- private int newMsgs;
-
private KSKBoard() {
}
@@ -57,15 +55,12 @@
public KSKBoard(KSKBoardFactory factory,
int id, String name,
- Date lastUpdate,
- int newMessages) {
+ Date lastUpdate) {
this.id = id;
this.name = name;
this.factory = factory;
this.lastUpdate = lastUpdate;
- newMsgs = newMessages;
-
refreshing = false;
}
@@ -551,6 +546,8 @@
Logger.error(this, "Unable to update the lastUpdate
date :"+e.toString());
}
+ int newMsgs = getNewMessageNumber();
+
if (newMsgs > 0) {
String announce =
I18n.getMessage("thaw.plugin.miniFrost.newMsgAnnounce");
announce = announce.replaceAll("X",
Integer.toString(newMsgs));
@@ -609,8 +606,8 @@
&& msg.isSuccessful();
if (successful) {
- if (msg.isParsable() && !msg.isRead())
- newMsgs++;
+ //if (msg.isParsable() && !msg.isRead())
+ // newMsgs++;
if (msg.getRev() > lastSuccessfulRev)
lastSuccessfulRev = msg.getRev();
@@ -774,15 +771,73 @@
return refreshing;
}
- public int getNewMessageNumber() {
- return newMsgs;
+
+ protected static int countNewMessages(Hsqldb db, int boardId,
+ boolean unsigned, boolean
archived, int minTrustLevel) {
+ int count = -1;
+
+ String archivedStr = "";
+
+ if (!archived)
+ archivedStr = " AND frostKSKMessages.archived = FALSE";
+
+ String unsignedStr = " AND (frostKSKMessages.sigId IS NULL OR
signatures.trustLevel >= ?)";
+
+ if (!unsigned)
+ unsignedStr = " AND frostKSKMessages.sigId IS NOT NULL
AND signatures.trustLevel >= ?";
+
+ String query = "SELECT count(frostKSKMessages.id) "+
+ "FROM frostKSKMessages LEFT JOIN signatures "+
+ " ON frostKSKMessages.sigId = signatures.id "+
+ "WHERE frostKSKMessages.boardId = ? "+
+ "AND frostKSKMessages.read = FALSE"+
+ archivedStr+
+ unsignedStr;
+
+ try {
+ PreparedStatement subSt;
+
+ subSt = db.getConnection().prepareStatement(query);
+ subSt.setInt(1, boardId);
+ subSt.setInt(2, minTrustLevel);
+
+ ResultSet subRes = subSt.executeQuery();
+
+ if (subRes.next())
+ count = subRes.getInt(1);
+
+ } catch(SQLException e) {
+ Logger.error(db, "Can't count the number of new message
on the board because : "+e.toString());
+ }
+
+ return count;
}
- protected void setNewMessageNumber(int nmb) {
- this.newMsgs = nmb;
+
+ boolean lastUnsignedSetting;
+ boolean lastArchivedSetting;
+ int lastMinTrustLevelSetting;
+
+ /**
+ * just for the announce through the trayicon;
+ */
+ private int getNewMessageNumber() {
+ return getNewMessageNumber(lastUnsignedSetting,
+ lastArchivedSetting,
+ lastMinTrustLevelSetting);
}
+ public int getNewMessageNumber(boolean unsigned, boolean archived, int
minTrustLevel) {
+ this.lastUnsignedSetting = unsigned;
+ this.lastArchivedSetting = archived;
+ this.lastMinTrustLevelSetting = minTrustLevel;
+
+ return countNewMessages(factory.getDb(), id,
+ unsigned, archived, minTrustLevel);
+ }
+
+
public boolean destroy() {
Hsqldb db = factory.getDb();
Modified:
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -283,29 +283,7 @@
}
}
- protected int countNewMessages(int boardId) {
- int count = 0;
- try {
- PreparedStatement subSt
- = db.getConnection().prepareStatement("SELECT
count(id)"+
- "FROM
frostKSKMessages "+
- "WHERE
boardId = ? "+
- "AND read
= FALSE AND archived = FALSE");
- subSt.setInt(1, boardId);
- ResultSet subRes = subSt.executeQuery();
-
- if (subRes.next())
- count = subRes.getInt(1);
- } catch(SQLException e) {
- Logger.error(this, "Can't count the number of new
message on the board because : "+e.toString());
- }
-
- return count;
- }
-
-
-
public Vector getBoards() {
Vector v = new Vector();
@@ -329,11 +307,8 @@
if (boardsHashMap.get(name) != null)
v.add(boardsHashMap.get(name));
else {
- int count =
countNewMessages(id);
-
KSKBoard board = new
KSKBoard(this,
-
id, name, lastUpdate,
-
count);
+
id, name, lastUpdate);
v.add(board);
boardsHashMap.put(name, board);
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKMessage.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKMessage.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKMessage.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -263,11 +263,6 @@
this.read = read;
- if (read)
- board.setNewMessageNumber(board.getNewMessageNumber()
-1);
- else
- board.setNewMessageNumber(board.getNewMessageNumber()
+1);
-
try {
Hsqldb db = board.getFactory().getDb();
@@ -293,13 +288,6 @@
this.archived = archived;
- if (!read) {
- if (archived)
-
board.setNewMessageNumber(board.getNewMessageNumber() -1);
- else
-
board.setNewMessageNumber(board.getNewMessageNumber() +1);
- }
-
try {
Hsqldb db = board.getFactory().getDb();
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoard.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoard.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoard.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -14,10 +14,9 @@
public SSKBoard(SSKBoardFactory factory,
int id, String name, Date lastUpdate,
- String publicKey, String privateKey,
- int newMessages) {
+ String publicKey, String privateKey) {
- super(factory, id, name, lastUpdate, newMessages);
+ super(factory, id, name, lastUpdate);
if (!publicKey.endsWith("/"))
publicKey += "/";
Modified:
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoardFactory.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoardFactory.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/SSKBoardFactory.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -96,12 +96,9 @@
v.add(boards.get(name+publicKey));
else {
- int count =
countNewMessages(id);
-
SSKBoard board = new
SSKBoard(this,
id, name, lastUpdate,
-
publicKey, privateKey,
-
count);
+
publicKey, privateKey);
v.add(board);
boards.put(name+publicKey,
board);
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/interfaces/Board.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/interfaces/Board.java
2007-08-17 20:40:40 UTC (rev 14770)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/interfaces/Board.java
2007-08-17 20:56:37 UTC (rev 14771)
@@ -46,7 +46,9 @@
public boolean isRefreshing();
- public int getNewMessageNumber();
+ public int getNewMessageNumber(boolean unsigned,
+ boolean archived,
+ int minTrustLevel);
public boolean destroy();