Search in sources :

Example 1 with Taggable

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);
    }
}
Also used : Taggable(com.biglybt.core.tag.Taggable)

Example 2 with Taggable

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();
                        }
                    }
                }
            }
        }
    }
}
Also used : DownloadManager(com.biglybt.core.download.DownloadManager) TagManager(com.biglybt.core.tag.TagManager) Tag(com.biglybt.core.tag.Tag) Taggable(com.biglybt.core.tag.Taggable) Download(com.biglybt.pif.download.Download) ShareResourceFile(com.biglybt.pif.sharing.ShareResourceFile) File(java.io.File)

Example 3 with Taggable

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();
            }
        }
    }
}
Also used : ChatInstance(com.biglybt.plugin.net.buddy.BuddyPluginBeta.ChatInstance) TableCellSWT(com.biglybt.ui.swt.views.table.TableCellSWT) TaggableLifecycleAdapter(com.biglybt.core.tag.TaggableLifecycleAdapter) ArrayList(java.util.ArrayList) Image(org.eclipse.swt.graphics.Image) DownloadManager(com.biglybt.core.download.DownloadManager) TableCellMouseListener(com.biglybt.pif.ui.tables.TableCellMouseListener) TableColumnCreationListener(com.biglybt.pif.ui.tables.TableColumnCreationListener) TableCell(com.biglybt.pif.ui.tables.TableCell) UISWTViewEvent(com.biglybt.ui.swt.pif.UISWTViewEvent) TableManager(com.biglybt.pif.ui.tables.TableManager) Download(com.biglybt.pif.download.Download) Composite(org.eclipse.swt.widgets.Composite) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) UISWTViewEventListener(com.biglybt.ui.swt.pif.UISWTViewEventListener) TableColumn(com.biglybt.pif.ui.tables.TableColumn) Point(org.eclipse.swt.graphics.Point) TagType(com.biglybt.core.tag.TagType) UISWTView(com.biglybt.ui.swt.pif.UISWTView) TableCellRefreshListener(com.biglybt.pif.ui.tables.TableCellRefreshListener) TableCellMouseEvent(com.biglybt.pif.ui.tables.TableCellMouseEvent) Tag(com.biglybt.core.tag.Tag) Taggable(com.biglybt.core.tag.Taggable)

Aggregations

Taggable (com.biglybt.core.tag.Taggable)3 DownloadManager (com.biglybt.core.download.DownloadManager)2 Tag (com.biglybt.core.tag.Tag)2 Download (com.biglybt.pif.download.Download)2 TagManager (com.biglybt.core.tag.TagManager)1 TagType (com.biglybt.core.tag.TagType)1 TaggableLifecycleAdapter (com.biglybt.core.tag.TaggableLifecycleAdapter)1 ShareResourceFile (com.biglybt.pif.sharing.ShareResourceFile)1 TableCell (com.biglybt.pif.ui.tables.TableCell)1 TableCellMouseEvent (com.biglybt.pif.ui.tables.TableCellMouseEvent)1 TableCellMouseListener (com.biglybt.pif.ui.tables.TableCellMouseListener)1 TableCellRefreshListener (com.biglybt.pif.ui.tables.TableCellRefreshListener)1 TableColumn (com.biglybt.pif.ui.tables.TableColumn)1 TableColumnCreationListener (com.biglybt.pif.ui.tables.TableColumnCreationListener)1 TableManager (com.biglybt.pif.ui.tables.TableManager)1 ChatInstance (com.biglybt.plugin.net.buddy.BuddyPluginBeta.ChatInstance)1 UISWTView (com.biglybt.ui.swt.pif.UISWTView)1 UISWTViewEvent (com.biglybt.ui.swt.pif.UISWTViewEvent)1 UISWTViewEventListener (com.biglybt.ui.swt.pif.UISWTViewEventListener)1 TableCellSWT (com.biglybt.ui.swt.views.table.TableCellSWT)1