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();



Reply via email to