From: <pga...@vu...> - 2017-01-08 01:26:50
|
Revision: 43966 Author: pgardner Date: 2017-01-08 01:26:39 +0000 (Sun, 08 Jan 2017) Log Message: ----------- Support for adding chat notifications Modified Paths: -------------- client/trunk/azureus2/src/com/aelitis/azureus/core/helpers/TorrentFolderWatcher.java client/trunk/azureus2/src/com/aelitis/azureus/core/util/AZ3Functions.java client/trunk/azureus2/src/com/aelitis/azureus/core/util/CopyOnWriteList.java client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/BuddyPluginBeta.java client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/swt/BuddyPluginView.java client/trunk/azureus3/src/com/aelitis/azureus/activities/LocalActivityManager.java client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesEntry.java client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesManager.java client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/columns/vuzeactivity/ColumnActivityDate.java client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/subscriptions/SubscriptionManagerUI.java client/trunk/azureus3/src/com/aelitis/azureus/util/InitialisationFunctions.java Modified: client/trunk/azureus2/src/com/aelitis/azureus/core/helpers/TorrentFolderWatcher.java =================================================================== --- client/trunk/azureus2/src/com/aelitis/azureus/core/helpers/TorrentFolderWatcher.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus2/src/com/aelitis/azureus/core/helpers/TorrentFolderWatcher.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -197,9 +197,7 @@ private void importAddedFiles() { AzureusCore core = AzureusCoreFactory.getSingleton(); - - org.gudy.azureus2.plugins.download.DownloadManager plugin_dm = core.getPluginManager().getDefaultPluginInterface().getDownloadManager(); - + try { this_mon.enter(); @@ -209,11 +207,13 @@ GlobalManager global_manager = _global_manager; - if ( global_manager == null ){ + if ( global_manager == null || !core.isStarted()){ return; } + org.gudy.azureus2.plugins.download.DownloadManager plugin_dm = core.getPluginManager().getDefaultPluginInterface().getDownloadManager(); + boolean save_torrents_default = COConfigurationManager.getBooleanParameter("Save Torrent Files"); String torrent_save_path = COConfigurationManager Modified: client/trunk/azureus2/src/com/aelitis/azureus/core/util/AZ3Functions.java =================================================================== --- client/trunk/azureus2/src/com/aelitis/azureus/core/util/AZ3Functions.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus2/src/com/aelitis/azureus/core/util/AZ3Functions.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -21,6 +21,7 @@ package com.aelitis.azureus.core.util; import java.net.URL; +import java.util.Map; import org.gudy.azureus2.core3.download.DownloadManager; @@ -116,5 +117,23 @@ getDefaultContentNetworkURL( int type, Object[] params); + + public void + addLocalActivity( + String uid, + String icon_id, + String name, + String[] actions, + Class<? extends LocalActivityCallback> callback, + Map<String,String> callback_data ); + + public interface + LocalActivityCallback + { + public void + actionSelected( + String action, + Map<String,String> data ); + } } } Modified: client/trunk/azureus2/src/com/aelitis/azureus/core/util/CopyOnWriteList.java =================================================================== --- client/trunk/azureus2/src/com/aelitis/azureus/core/util/CopyOnWriteList.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus2/src/com/aelitis/azureus/core/util/CopyOnWriteList.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -175,6 +175,24 @@ } } + public T + get( + T entry ) + { + synchronized( this ){ + + for ( T e: list ){ + + if ( e.equals( entry )){ + + return( e ); + } + } + } + + return( null ); + } + public void add( int index, Modified: client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/BuddyPluginBeta.java =================================================================== --- client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/BuddyPluginBeta.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/BuddyPluginBeta.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -81,6 +81,7 @@ import com.aelitis.azureus.core.tag.Tag; import com.aelitis.azureus.core.tag.TagManagerFactory; import com.aelitis.azureus.core.tag.TagType; +import com.aelitis.azureus.core.util.AZ3Functions; import com.aelitis.azureus.core.util.CopyOnWriteList; import com.aelitis.azureus.plugins.I2PHelpers; @@ -2290,6 +2291,56 @@ return( chat_instances_list.getList()); } + private void + addChatActivity( + ChatInstance inst, + ChatMessage message ) + { + if ( message != null ){ + + AZ3Functions.provider provider = AZ3Functions.getProvider(); + + if ( provider == null ){ + + return; + } + + String str = inst.getName() + ": " + message.getMessage(); + + Map<String,String> cb_data = new HashMap<String, String>(); + + cb_data.put( "allowReAdd", "true" ); + cb_data.put( "net", inst.getNetwork()); + cb_data.put( "key", inst.getKey()); + + provider.addLocalActivity( + inst.getNetAndKey(), + "image.sidebar.chat-overview", + str, + new String[]{ "View" }, + ActivityCallback.class, + cb_data ); + } + } + + public static class + ActivityCallback + implements AZ3Functions.provider.LocalActivityCallback + { + public void + actionSelected( + String action, Map<String, String> data) + { + String net = data.get( "net" ); + String key = data.get( "key" ); + + if ( net != null && key != null ){ + + BuddyPluginUtils.createBetaChat( net, key, null ); + } + } + } + public void addListener( ChatManagerListener l, @@ -4838,22 +4889,26 @@ public void setMessageOutstanding( - boolean b ) + ChatMessage message ) { + boolean outstanding = message != null; + boolean changed = false; + addChatActivity( this, message ); + synchronized( chat_lock ){ - if ( message_outstanding == b ){ + if ( message_outstanding == outstanding ){ return; } - message_outstanding = b; + message_outstanding = outstanding; changed = true; - if ( !b ){ + if ( !outstanding ){ if ( messages.size() > 0 ){ Modified: client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/swt/BuddyPluginView.java =================================================================== --- client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/swt/BuddyPluginView.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus2/src/com/aelitis/azureus/plugins/net/buddy/swt/BuddyPluginView.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -1059,7 +1059,7 @@ return; } - chat.setMessageOutstanding( true ); + chat.setMessageOutstanding( pending_message ); if ( entry == null ){ @@ -1201,7 +1201,7 @@ chat.setUserData( CHAT_LM_KEY, chat.getLastMessageRequiringAttention()); - chat.setMessageOutstanding( false ); + chat.setMessageOutstanding( null ); if ( entry != null ){ Modified: client/trunk/azureus3/src/com/aelitis/azureus/activities/LocalActivityManager.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/activities/LocalActivityManager.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus3/src/com/aelitis/azureus/activities/LocalActivityManager.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -26,6 +26,8 @@ import org.gudy.azureus2.core3.util.SystemTime; +import com.aelitis.azureus.core.util.AZ3Functions; + public class LocalActivityManager { @@ -55,12 +57,12 @@ public static void addLocalActivity( - String uid, - String icon_id, - String name, - String action, - Class<? extends LocalActivityCallback> callback, - Map<String,String> callback_data ) + String uid, + String icon_id, + String name, + String[] actions, + Class<? extends AZ3Functions.provider.LocalActivityCallback> callback, + Map<String,String> callback_data ) { VuzeActivitiesEntry entry = new VuzeActivitiesEntry( @@ -72,7 +74,7 @@ entry.setIconIDRaw( icon_id ); - entry.setActions( new String[]{ action }); + entry.setActions( actions ); entry.setCallback( callback, callback_data ); @@ -93,10 +95,7 @@ public interface LocalActivityCallback + extends AZ3Functions.provider.LocalActivityCallback { - public void - actionSelected( - String action, - Map<String,String> data ); } } Modified: client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesEntry.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesEntry.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesEntry.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -34,6 +34,7 @@ import com.aelitis.azureus.core.AzureusCoreFactory; import com.aelitis.azureus.core.torrent.PlatformTorrentUtils; +import com.aelitis.azureus.core.util.AZ3Functions; import com.aelitis.azureus.ui.common.table.TableColumnCore; import com.aelitis.azureus.ui.common.table.TableColumnSortObject; import com.aelitis.azureus.ui.selectedcontent.SelectedContentV3; @@ -117,6 +118,32 @@ this.timestamp = SystemTime.getCurrentTime(); } + protected void + updateFrom( + VuzeActivitiesEntry other ) + { + text = other.text; + iconID = other.iconID; + id = other.id; + timestamp = other.timestamp; + typeID = other.typeID; + assetHash = other.assetHash; + assetImageURL = other.assetImageURL; + dm = other.dm; + urlInfo = other.urlInfo; + tableColumn = other.tableColumn; + imageBytes = other.imageBytes; + showThumb = other.showThumb; + torrentName = other.torrentName; + torrent = other.torrent; + playable = other.playable; + readOn = 0; // other.readOn; + actions = other.actions; + callback_class = other.callback_class; + callback_data = other.callback_data; + viewed = false; // other.viewed; + } + /** * @param platformEntry */ @@ -251,9 +278,15 @@ return( actions==null?new String[0]:actions ); } + public boolean + allowReAdd() + { + return( callback_data != null && callback_data.containsKey( "allowReAdd" )); + } + public void setCallback( - Class<? extends LocalActivityManager.LocalActivityCallback> _callback, + Class<? extends AZ3Functions.provider.LocalActivityCallback> _callback, Map<String,String> _callback_data ) { callback_class = _callback.getName(); @@ -265,7 +298,7 @@ String action ) { try{ - Class<? extends LocalActivityManager.LocalActivityCallback> cb = (Class<? extends LocalActivityManager.LocalActivityCallback>)getClass().forName( callback_class ); + Class<? extends AZ3Functions.provider.LocalActivityCallback> cb = (Class<? extends AZ3Functions.provider.LocalActivityCallback>)getClass().forName( callback_class ); cb.newInstance().actionSelected( action, callback_data ); Modified: client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesManager.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesManager.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus3/src/com/aelitis/azureus/activities/VuzeActivitiesManager.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -476,8 +476,11 @@ boolean isHeader = VuzeActivitiesConstants.TYPEID_HEADER.equals(entry.getTypeID()); if ((entry.getTimestamp() >= cutoffTime || isHeader) && !removedEntries.contains(entry)) { - if (allEntries.contains(entry)) { - existingEntries.add(entry); + + VuzeActivitiesEntry existing_entry = allEntries.get( entry ); + if (existing_entry != null) { + existingEntries.add(existing_entry); + existing_entry.updateFrom( entry ); } else { newEntries.add(entry); allEntries.add(entry); @@ -532,7 +535,10 @@ allEntries.remove(entry); boolean isHeader = VuzeActivitiesConstants.TYPEID_HEADER.equals(entry.getTypeID()); if (!allowReAdd && entry.getTimestamp() > cutoffTime && !isHeader) { - removedEntries.add(entry); + if ( !entry.allowReAdd()){ + + removedEntries.add(entry); + } } } } finally { Modified: client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/columns/vuzeactivity/ColumnActivityDate.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/columns/vuzeactivity/ColumnActivityDate.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/columns/vuzeactivity/ColumnActivityDate.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -46,6 +46,8 @@ */ public ColumnActivityDate(String tableID) { super(null, COLUMN_ID, TableColumnCreator.DATE_COLUMN_WIDTH, tableID); + + setMultiline(false); } // @see org.gudy.azureus2.plugins.ui.tables.TableCellAddedListener#cellAdded(org.gudy.azureus2.plugins.ui.tables.TableCell) Modified: client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/subscriptions/SubscriptionManagerUI.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/subscriptions/SubscriptionManagerUI.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/subscriptions/SubscriptionManagerUI.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -601,7 +601,7 @@ MessageText.getString( "subs.activity.website.found", new String[]{ sub.getName() }), - MessageText.getString( "subscriptions.listwindow.subscribe" ), + new String[]{ MessageText.getString( "subscriptions.listwindow.subscribe" )}, ActivityCallback.class, cb_data ); } Modified: client/trunk/azureus3/src/com/aelitis/azureus/util/InitialisationFunctions.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/util/InitialisationFunctions.java 2017-01-07 17:03:22 UTC (rev 43965) +++ client/trunk/azureus3/src/com/aelitis/azureus/util/InitialisationFunctions.java 2017-01-08 01:26:39 UTC (rev 43966) @@ -24,7 +24,9 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Map; +import com.aelitis.azureus.activities.LocalActivityManager; import com.aelitis.azureus.core.AzureusCore; import com.aelitis.azureus.core.cnetwork.ContentNetworkManagerFactory; import com.aelitis.azureus.core.content.AzureusPlatformContentDirectory; @@ -382,7 +384,16 @@ return( result.toArray( new TranscodeTarget[result.size()])); } - + + + @Override + public void addLocalActivity(String uid, String icon_id, + String name, String[] actions, + Class<? extends LocalActivityCallback> callback, + Map<String, String> callback_data) { + + LocalActivityManager.addLocalActivity(uid, icon_id, name, actions, callback, callback_data ); + } }); } |