use of com.biglybt.core.tag.Taggable in project BiglyBT by BiglySoftware.
the class TagButtonsUI method updateButtonState.
private void updateButtonState(Tag tag, Button button, List<Taggable> taggables) {
if (taggables == null) {
button.setSelection(false);
button.setEnabled(false);
button.getParent().redraw();
return;
}
boolean hasTag = false;
boolean hasNoTag = false;
for (Taggable taggable : taggables) {
boolean curHasTag = tag.hasTaggable(taggable);
if (!hasTag && curHasTag) {
hasTag = true;
if (hasNoTag) {
break;
}
} else if (!hasNoTag && !curHasTag) {
hasNoTag = true;
if (hasTag) {
break;
}
}
}
boolean[] auto = tag.isTagAuto();
boolean auto_add = auto[0];
boolean auto_rem = auto[1];
if (hasTag && hasNoTag) {
button.setEnabled(!auto_add);
button.setGrayed(true);
button.setSelection(true);
} else {
if (auto_add && auto_rem) {
button.setEnabled(false);
} else {
button.setEnabled((hasTag) || (!hasTag && !auto_add));
}
button.setGrayed(false);
button.setSelection(hasTag);
}
}
use of com.biglybt.core.tag.Taggable in project BiglyBT by BiglySoftware.
the class DeviceMediaRendererImpl method updateStatus.
@Override
protected void updateStatus(int tick_count) {
super.updateStatus(tick_count);
if (tick_count > 0 && tick_count % TAG_SHARE_CHECK_TICKS == 0) {
long tag_id = getAutoShareToTagID();
if (tag_id != -1) {
synchronized (DeviceMediaRendererImpl.class) {
if (share_ta == null) {
share_ta = PluginInitializer.getDefaultInterface().getTorrentManager().getPluginAttribute("DeviceMediaRendererImpl:tag_share");
}
}
TagManager tm = TagManagerFactory.getTagManager();
Tag assigned_tag = tm.lookupTagByUID(tag_id);
if (assigned_tag != null) {
// not going to want this to be public
assigned_tag.setPublic(false);
synchronized (share_requests) {
if (share_requests.size() == 0) {
Set<Taggable> taggables = assigned_tag.getTagged();
Set<String> done_files = new HashSet<>();
for (Taggable temp : taggables) {
if (!(temp instanceof DownloadManager)) {
continue;
}
DownloadManager dm = (DownloadManager) temp;
Download download = PluginCoreUtils.wrap(dm);
String attr = download.getAttribute(share_ta);
if (attr != null) {
done_files.add(attr);
}
}
TranscodeFileImpl[] files = getFiles();
for (TranscodeFileImpl file : files) {
if (file.isComplete()) {
try {
File target_file = file.getTargetFile().getFile(true);
long size = target_file.length();
if (target_file.exists() && size > 0) {
String suffix = " (" + file.getProfileName() + " - " + DisplayFormatters.formatByteCountToKiBEtc(size) + ")";
String share_name = file.getName() + suffix;
String key = target_file.getName() + suffix;
if (!done_files.contains(key)) {
share_requests.add(new Object[] { key, target_file, share_name, assigned_tag });
}
}
} catch (Throwable e) {
}
}
}
if (share_requests.size() > 0) {
shareRequestAdded();
}
}
}
}
}
}
}
use of com.biglybt.core.tag.Taggable in project BiglyBT by BiglySoftware.
the class BuddyPluginView method addBetaSubviews.
private void addBetaSubviews(boolean enable) {
String[] views = { TableManager.TABLE_MYTORRENTS_ALL_BIG, TableManager.TABLE_MYTORRENTS_INCOMPLETE, TableManager.TABLE_MYTORRENTS_INCOMPLETE_BIG, TableManager.TABLE_MYTORRENTS_COMPLETE, "TagsView" };
if (enable) {
taggableLifecycleAdapter = new TaggableLifecycleAdapter() {
@Override
public void taggableTagged(TagType tag_type, Tag tag, Taggable taggable) {
if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
DownloadManager dm = (DownloadManager) taggable;
for (BetaSubViewHolder h : beta_subviews.values()) {
h.tagsUpdated(dm);
}
}
}
@Override
public void taggableUntagged(TagType tag_type, Tag tag, Taggable taggable) {
if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
DownloadManager dm = (DownloadManager) taggable;
for (BetaSubViewHolder h : beta_subviews.values()) {
h.tagsUpdated(dm);
}
}
}
};
TagManagerFactory.getTagManager().addTaggableLifecycleListener(Taggable.TT_DOWNLOAD, taggableLifecycleAdapter);
UISWTViewEventListener listener = new UISWTViewEventListener() {
@Override
public boolean eventOccurred(UISWTViewEvent event) {
UISWTView currentView = event.getView();
switch(event.getType()) {
case UISWTViewEvent.TYPE_CREATE:
{
beta_subviews.put(currentView, new BetaSubViewHolder());
currentView.setDestroyOnDeactivate(false);
break;
}
case UISWTViewEvent.TYPE_INITIALIZE:
{
BetaSubViewHolder subview = beta_subviews.get(currentView);
if (subview != null) {
subview.initialise(event.getView(), (Composite) event.getData());
}
break;
}
case UISWTViewEvent.TYPE_DATASOURCE_CHANGED:
{
BetaSubViewHolder subview = beta_subviews.get(currentView);
if (subview != null) {
subview.setDataSource(event.getData());
}
break;
}
case UISWTViewEvent.TYPE_FOCUSGAINED:
{
BetaSubViewHolder subview = beta_subviews.get(currentView);
if (subview != null) {
subview.gotFocus();
}
break;
}
case UISWTViewEvent.TYPE_FOCUSLOST:
{
BetaSubViewHolder subview = beta_subviews.get(currentView);
if (subview != null) {
subview.lostFocus();
}
break;
}
case UISWTViewEvent.TYPE_DESTROY:
{
BetaSubViewHolder subview = beta_subviews.remove(currentView);
if (subview != null) {
subview.destroy();
}
break;
}
}
return true;
}
};
for (String table_id : views) {
ui_instance.addView(table_id, "azbuddy.ui.menu.chat", listener);
}
TableManager table_manager = plugin.getPluginInterface().getUIManager().getTableManager();
TableCellRefreshListener msg_refresh_listener = new TableCellRefreshListener() {
@Override
public void refresh(TableCell _cell) {
TableCellSWT cell = (TableCellSWT) _cell;
Download dl = (Download) cell.getDataSource();
if (dl == null) {
return;
}
List<ChatInstance> instances = BuddyPluginUtils.peekChatInstances(dl);
boolean is_pending = false;
for (ChatInstance instance : instances) {
if (instance.getMessageOutstanding()) {
is_pending = true;
}
}
Image graphic;
String tooltip;
int sort_order;
if (is_pending) {
graphic = bs_chat_gray_text;
tooltip = MessageText.getString("TableColumn.header.chat.msg.out");
sort_order = 1;
} else {
graphic = null;
tooltip = MessageText.getString("label.no.messages");
sort_order = 0;
}
cell.setMarginHeight(0);
cell.setGraphic(graphic);
cell.setToolTip(tooltip);
cell.setSortValue(sort_order);
cell.setCursorID(graphic == null ? SWT.CURSOR_ARROW : SWT.CURSOR_HAND);
}
};
TableCellMouseListener msg_mouse_listener = new TableCellMouseListener() {
@Override
public void cellMouseTrigger(TableCellMouseEvent event) {
if (event.eventType == TableCellMouseEvent.EVENT_MOUSEUP) {
TableCell cell = event.cell;
Download dl = (Download) cell.getDataSource();
if (dl != null) {
List<ChatInstance> instances = BuddyPluginUtils.peekChatInstances(dl);
for (ChatInstance instance : instances) {
if (instance.getMessageOutstanding()) {
try {
BuddyPluginUtils.getBetaPlugin().showChat(instance);
} catch (Throwable e) {
Debug.out(e);
}
}
}
}
}
}
};
columnMessagePending = new TableColumnCreationListener() {
@Override
public void tableColumnCreated(TableColumn result) {
result.setAlignment(TableColumn.ALIGN_CENTER);
result.setPosition(TableColumn.POSITION_LAST);
result.setWidth(32);
result.setRefreshInterval(TableColumn.INTERVAL_INVALID_ONLY);
result.setType(TableColumn.TYPE_GRAPHIC);
result.addCellRefreshListener(msg_refresh_listener);
result.addCellMouseListener(msg_mouse_listener);
result.setIconReference("dchat_gray", true);
synchronized (columns) {
columns.add(result);
}
}
};
table_manager.registerColumn(Download.class, "azbuddy.ui.column.msgpending", columnMessagePending);
} else {
for (String table_id : views) {
ui_instance.removeViews(table_id, "azbuddy.ui.menu.chat");
}
for (UISWTView entry : new ArrayList<>(beta_subviews.keySet())) {
entry.closeView();
}
if (taggableLifecycleAdapter != null) {
TagManagerFactory.getTagManager().removeTaggableLifecycleListener(Taggable.TT_DOWNLOAD, taggableLifecycleAdapter);
taggableLifecycleAdapter = null;
}
beta_subviews.clear();
if (columnMessagePending != null) {
TableManager table_manager = plugin.getPluginInterface().getUIManager().getTableManager();
table_manager.unregisterColumn(Download.class, "azbuddy.ui.column.msgpending", columnMessagePending);
columnMessagePending = null;
synchronized (columns) {
columns.clear();
}
}
}
}
Aggregations