From: <pga...@vu...> - 2010-10-29 23:11:06
|
Revision: 25962 Author: pgardner Date: 2010-10-29 23:03:00 +0000 (Fri, 29 Oct 2010) Log Message: ----------- added some subs info Modified Paths: -------------- client/trunk/azureus2/src/org/gudy/azureus2/internat/MessagesBundle.properties client/trunk/azureus3/src/com/aelitis/azureus/core/subs/SubscriptionManager.java client/trunk/azureus3/src/com/aelitis/azureus/core/subs/impl/SubscriptionManagerImpl.java client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/subscriptions/SubscriptionManagerUI.java Modified: client/trunk/azureus2/src/org/gudy/azureus2/internat/MessagesBundle.properties =================================================================== --- client/trunk/azureus2/src/org/gudy/azureus2/internat/MessagesBundle.properties 2010-10-29 20:59:09 UTC (rev 25961) +++ client/trunk/azureus2/src/org/gudy/azureus2/internat/MessagesBundle.properties 2010-10-29 23:03:00 UTC (rev 25962) @@ -3859,4 +3859,6 @@ v3.menu.device.defaultprofile.never=Never Transcode +subscriptions.info.avail=You haven't added any subscriptions yet. %1 are available for your library. + #PLEASE LEAVE ME AT VERY BOTTOM! Modified: client/trunk/azureus3/src/com/aelitis/azureus/core/subs/SubscriptionManager.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/core/subs/SubscriptionManager.java 2010-10-29 20:59:09 UTC (rev 25961) +++ client/trunk/azureus3/src/com/aelitis/azureus/core/subs/SubscriptionManager.java 2010-10-29 23:03:00 UTC (rev 25962) @@ -58,6 +58,13 @@ throws SubscriptionException; + public int + getKnownSubscriptionCount(); + + public int + getSubscriptionCount( + boolean subscribed_only ); + public Subscription[] getSubscriptions(); Modified: client/trunk/azureus3/src/com/aelitis/azureus/core/subs/impl/SubscriptionManagerImpl.java =================================================================== --- client/trunk/azureus3/src/com/aelitis/azureus/core/subs/impl/SubscriptionManagerImpl.java 2010-10-29 20:59:09 UTC (rev 25961) +++ client/trunk/azureus3/src/com/aelitis/azureus/core/subs/impl/SubscriptionManagerImpl.java 2010-10-29 23:03:00 UTC (rev 25962) @@ -2130,6 +2130,32 @@ return((SubscriptionImpl[])result.toArray( new SubscriptionImpl[result.size()])); } + public int + getSubscriptionCount( + boolean subscribed_only ) + { + if ( subscribed_only ){ + + int total = 0; + + synchronized( this ){ + + for ( Subscription subs: subscriptions ){ + + if ( subs.isSubscribed()){ + + total++; + } + } + } + + return( total ); + + }else{ + return( subscriptions.size()); + } + } + protected SubscriptionImpl getSubscriptionFromName( String name ) @@ -2221,6 +2247,45 @@ return( new File( dir, ByteFormatter.encodeString( subs.getShortID()) + ".results" )); } + public int + getKnownSubscriptionCount() + { + PluginInterface pi = PluginInitializer.getDefaultInterface(); + + ByteArrayHashMap<String> results = new ByteArrayHashMap<String>(); + + try{ + Download[] downloads = pi.getDownloadManager().getDownloads(); + + for ( Download download: downloads ){ + + Map m = download.getMapAttribute( ta_subscription_info ); + + if ( m != null ){ + + List s = (List)m.get("s"); + + if ( s != null && s.size() > 0 ){ + + List result = new ArrayList( s.size()); + + for (int i=0;i<s.size();i++){ + + byte[] sid = (byte[])s.get(i); + + results.put( sid, "" ); + } + } + } + } + }catch( Throwable e ){ + + log( "Failed to get known subscriptions", e ); + } + + return( results.size()); + } + public Subscription[] getKnownSubscriptions( byte[] hash ) 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 2010-10-29 20:59:09 UTC (rev 25961) +++ client/trunk/azureus3/src/com/aelitis/azureus/ui/swt/subscriptions/SubscriptionManagerUI.java 2010-10-29 23:03:00 UTC (rev 25962) @@ -63,6 +63,7 @@ public static final Object SUB_EDIT_MODE_KEY = new Object(); private static final String ALERT_IMAGE_ID = "image.sidebar.vitality.alert"; + private static final String INFO_IMAGE_ID = "image.sidebar.vitality.info"; static final String EDIT_MODE_MARKER = "&editMode=1"; @@ -932,69 +933,114 @@ warnSub.setVisible(false); } - headerEntry.setViewTitleInfo(new ViewTitleInfo() { - public Object getTitleInfoProperty(int propertyID) { - if (propertyID == TITLE_INDICATOR_TEXT) { + final MdiEntryVitalityImage infoSub = headerEntry.addVitalityImage(INFO_IMAGE_ID); + if (infoSub != null) { + infoSub.setVisible(false); + } - boolean expanded = headerEntry.isExpanded(); - - if (expanded) { - - warnSub.setVisible(false); - - } else { - - int total = 0; - boolean warn = false; - + + headerEntry.setViewTitleInfo( + new ViewTitleInfo() + { + private long last_avail_calc = -1; + private int last_avail; + + public Object + getTitleInfoProperty( + int propertyID) + { + Object result = null; + + if (propertyID == TITLE_INDICATOR_TEXT) { + + boolean expanded = headerEntry.isExpanded(); + Subscription[] subs = subs_man.getSubscriptions(true); - - String error_str = ""; - - for (Subscription s : subs) { - - SubscriptionHistory history = s.getHistory(); - - total += history.getNumUnread(); - - String last_error = history.getLastError(); - - if (last_error != null && last_error.length() > 0) { - - boolean auth_fail = history.isAuthFail(); - - if (history.getConsecFails() >= 3 || auth_fail) { - - warn = true; - - if (error_str.length() > 128) { - - if (!error_str.endsWith(", ...")) { - - error_str += ", ..."; + + if ( expanded ){ + + warnSub.setVisible(false); + + }else{ + + int total = 0; + + boolean warn = false; + + String error_str = ""; + + for (Subscription s : subs) { + + SubscriptionHistory history = s.getHistory(); + + total += history.getNumUnread(); + + String last_error = history.getLastError(); + + if (last_error != null && last_error.length() > 0) { + + boolean auth_fail = history.isAuthFail(); + + if (history.getConsecFails() >= 3 || auth_fail) { + + warn = true; + + if (error_str.length() > 128) { + + if (!error_str.endsWith(", ...")) { + + error_str += ", ..."; + } + } else { + + error_str += (error_str.length() == 0 ? "" : ", ") + + last_error; } - } else { - - error_str += (error_str.length() == 0 ? "" : ", ") - + last_error; } } } + + warnSub.setVisible(warn); + warnSub.setToolTip(error_str); + + if (total > 0) { + + result = String.valueOf( total ); + } } - - warnSub.setVisible(warn); - warnSub.setToolTip(error_str); - - if (total > 0) { - - return (String.valueOf(total)); + + if ( subs.length == 0 ){ + + long now = SystemTime.getMonotonousTime(); + + if ( last_avail_calc == -1 || + now - last_avail_calc > 60*1000 ){ + + last_avail = subs_man.getKnownSubscriptionCount(); + + last_avail_calc = now; + } + + if ( last_avail > 0 ){ + + infoSub.setVisible( true ); + + infoSub.setToolTip( + MessageText.getString( + "subscriptions.info.avail", + new String[]{ + String.valueOf( last_avail ) + })); + } + }else{ + + infoSub.setVisible( false ); } } + + return( result ); } - - return null; - } - }); + }); } private void @@ -1024,7 +1070,7 @@ changeSubscription( final Subscription subs ) { - ViewTitleInfoManager.refreshTitleInfo(mdiEntryOverview.getViewTitleInfo()); + refreshTitles( mdiEntryOverview ); if ( subs.isSubscribed()){ @@ -1157,8 +1203,32 @@ return entry; } + protected void + refreshTitles( + MdiEntry entry ) + { + MultipleDocumentInterface mdi = UIFunctionsManager.getUIFunctions().getMDI(); + + if ( mdi == null ){ + + return; + } + + while( entry != null ){ + ViewTitleInfoManager.refreshTitleInfo(entry.getViewTitleInfo()); + String key = entry.getParentID(); + + if ( key == null ){ + + return; + } + + entry = mdi.getEntry( key ); + } + } + protected void removeSubscription( final Subscription subs ) |