Search in sources :

Example 11 with ParameterListener

use of com.biglybt.core.config.ParameterListener in project BiglyBT by BiglySoftware.

the class MainWindowImpl method initWidgets2.

private void initWidgets2() {
    SWTSkinObject skinObject = skin.getSkinObject("statusbar");
    if (skinObject != null) {
        final Composite cArea = (Composite) skinObject.getControl();
        statusBar = new MainStatusBar();
        Composite composite = statusBar.initStatusBar(cArea);
        composite.setLayoutData(Utils.getFilledFormData());
    }
    skinObject = skin.getSkinObject("search-text");
    if (skinObject != null) {
        attachSearchBox(skinObject);
    }
    skinObject = skin.getSkinObject("add-torrent");
    if (skinObject instanceof SWTSkinObjectButton) {
        SWTSkinObjectButton btn = (SWTSkinObjectButton) skinObject;
        btn.addSelectionListener(new ButtonListenerAdapter() {

            // @see SWTSkinButtonUtility.ButtonListenerAdapter#pressed(SWTSkinButtonUtility, SWTSkinObject, int)
            @Override
            public void pressed(SWTSkinButtonUtility buttonUtility, SWTSkinObject skinObject, int stateMask) {
                UIFunctionsManagerSWT.getUIFunctionsSWT().openTorrentWindow();
            }
        });
    }
    skinObject = skin.getSkinObject(SkinConstants.VIEWID_PLUGINBAR);
    if (skinObject != null) {
        Menu topbarMenu = new Menu(shell, SWT.POP_UP);
        if (COConfigurationManager.getIntParameter("User Mode") > 1) {
            MenuItem mi = MainMenuV3.createViewMenuItem(skin, topbarMenu, "v3.MainWindow.menu.view." + SkinConstants.VIEWID_PLUGINBAR, SkinConstants.VIEWID_PLUGINBAR + ".visible", SkinConstants.VIEWID_PLUGINBAR, true, -1);
            if (Utils.isAZ2UI()) {
                // remove any accelerator as it doesn't work on this menu and we don't have a View menu entry
                String str = mi.getText();
                int pos = str.indexOf("\t");
                if (pos != -1) {
                    str = str.substring(0, pos).trim();
                    mi.setText(str);
                }
                mi.setAccelerator(SWT.NULL);
            }
        }
        new MenuItem(topbarMenu, SWT.SEPARATOR);
        final MenuItem itemClipMon = new MenuItem(topbarMenu, SWT.CHECK);
        Messages.setLanguageText(itemClipMon, "label.monitor.clipboard");
        itemClipMon.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                COConfigurationManager.setParameter("Monitor Clipboard For Torrents", itemClipMon.getSelection());
            }
        });
        boolean enabled = COConfigurationManager.getBooleanParameter("Monitor Clipboard For Torrents");
        itemClipMon.setSelection(enabled);
        configMonitorClipboardListener = new ParameterListener() {

            private volatile AEThread2 monitor_thread;

            private Clipboard clipboard;

            private String last_text;

            @Override
            public void parameterChanged(String parameterName) {
                boolean enabled = COConfigurationManager.getBooleanParameter(parameterName);
                if (enabled) {
                    if (clipboard == null) {
                        clipboard = new Clipboard(Display.getDefault());
                    }
                    if (monitor_thread == null) {
                        final AEThread2[] new_thread = { null };
                        monitor_thread = new_thread[0] = new AEThread2("Clipboard Monitor") {

                            @Override
                            public void run() {
                                Runnable checker = new Runnable() {

                                    @Override
                                    public void run() {
                                        if (monitor_thread != new_thread[0] || clipboard == null) {
                                            return;
                                        }
                                        String text = (String) clipboard.getContents(TextTransfer.getInstance());
                                        if (text != null && text.length() <= 2048) {
                                            if (last_text == null || !last_text.equals(text)) {
                                                last_text = text;
                                                TorrentOpener.openTorrentsFromClipboard(text);
                                            }
                                        }
                                    }
                                };
                                while (true) {
                                    try {
                                        Utils.execSWTThread(checker);
                                    } catch (Throwable e) {
                                        Debug.out(e);
                                    } finally {
                                        if (monitor_thread != new_thread[0]) {
                                            break;
                                        } else {
                                            try {
                                                Thread.sleep(500);
                                            } catch (Throwable e) {
                                                Debug.out(e);
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        };
                        monitor_thread.start();
                    }
                } else {
                    monitor_thread = null;
                    last_text = null;
                    if (clipboard != null) {
                        clipboard.dispose();
                        clipboard = null;
                    }
                }
            }
        };
        COConfigurationManager.addAndFireParameterListener("Monitor Clipboard For Torrents", configMonitorClipboardListener);
        new MenuItem(topbarMenu, SWT.SEPARATOR);
        SearchUtils.addMenus(topbarMenu);
        addMenuAndNonTextChildren((Composite) skinObject.getControl(), topbarMenu);
        skinObject = skin.getSkinObject(SkinConstants.VIEWID_TOOLBAR);
        if (skinObject != null) {
            addMenuAndNonTextChildren((Composite) skinObject.getControl(), topbarMenu);
        }
    }
}
Also used : SWTRunnable(com.biglybt.ui.swt.utils.SWTRunnable) ParameterListener(com.biglybt.core.config.ParameterListener) ButtonListenerAdapter(com.biglybt.ui.swt.skin.SWTSkinButtonUtility.ButtonListenerAdapter) Clipboard(org.eclipse.swt.dnd.Clipboard)

Example 12 with ParameterListener

use of com.biglybt.core.config.ParameterListener in project BiglyBT by BiglySoftware.

the class MainMenuV3 method createViewMenuItem.

// ====================================
/**
 * @param viewMenu
 */
public static MenuItem createViewMenuItem(final SWTSkin skin, Menu viewMenu, final String textID, final String configID, final String viewID, final boolean fast, int menuIndex) {
    MenuItem item;
    if (!ConfigurationDefaults.getInstance().doesParameterDefaultExist(configID)) {
        COConfigurationManager.setBooleanDefault(configID, true);
    }
    item = MenuFactory.addMenuItem(viewMenu, SWT.CHECK, menuIndex, textID, new Listener() {

        @Override
        public void handleEvent(Event event) {
            SWTSkinObject skinObject = skin.getSkinObject(viewID);
            if (skinObject != null) {
                boolean newVisibility = !skinObject.isVisible();
                SWTSkinUtils.setVisibility(skin, configID, viewID, newVisibility, true, fast);
            }
        }
    });
    SWTSkinUtils.setVisibility(skin, configID, viewID, COConfigurationManager.getBooleanParameter(configID), false, true);
    final MenuItem itemViewPluginBar = item;
    final ParameterListener listener = new ParameterListener() {

        @Override
        public void parameterChanged(String parameterName) {
            itemViewPluginBar.setSelection(COConfigurationManager.getBooleanParameter(parameterName));
        }
    };
    COConfigurationManager.addAndFireParameterListener(configID, listener);
    item.addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            COConfigurationManager.removeParameterListener(configID, listener);
        }
    });
    return item;
}
Also used : SWTSkinObject(com.biglybt.ui.swt.skin.SWTSkinObject) ParameterListener(com.biglybt.core.config.ParameterListener) UIToolBarActivationListener(com.biglybt.pif.ui.toolbar.UIToolBarActivationListener) ParameterListener(com.biglybt.core.config.ParameterListener)

Example 13 with ParameterListener

use of com.biglybt.core.config.ParameterListener in project BiglyBT by BiglySoftware.

the class ConfigurationChecker method setSystemProperties.

protected static void setSystemProperties() {
    try {
        class_mon.enter();
        if (system_properties_set) {
            return;
        }
        COConfigurationManager.preInitialise();
        // 
        String app_path = SystemProperties.getApplicationPath();
        String user_path = SystemProperties.getUserPath();
        loadProperties(app_path);
        if (!app_path.equals(user_path)) {
            loadProperties(user_path);
        }
        // kinda hard to do this system property setting early enough as we musn't load the
        // config until after checking the "pass to existing process" code and this loads the
        // class InetAddress that caches the current system prop
        COConfigurationManager.addAndFireParameterListener("IPV6 Prefer Addresses", new ParameterListener() {

            private boolean done_something = false;

            @Override
            public void parameterChanged(String name) {
                boolean prefer_ipv6 = COConfigurationManager.getBooleanParameter(name);
                boolean existing = !System.getProperty("java.net.preferIPv6Addresses", "false").equalsIgnoreCase("false");
                if (existing && !done_something) {
                    return;
                }
                if (existing != prefer_ipv6) {
                    done_something = true;
                    System.setProperty("java.net.preferIPv6Addresses", prefer_ipv6 ? "true" : "false");
                    try {
                        Field field = InetAddress.class.getDeclaredField("preferIPv6Address");
                        field.setAccessible(true);
                        field.setBoolean(null, prefer_ipv6);
                    } catch (Throwable e) {
                        Debug.out("Failed to update 'preferIPv6Address'", e);
                    }
                }
            }
        });
        if (Constants.isWindowsVistaOrHigher && Constants.isJava7OrHigher) {
            COConfigurationManager.addAndFireParameterListener("IPV4 Prefer Stack", new ParameterListener() {

                private boolean done_something = false;

                @Override
                public void parameterChanged(String name) {
                    boolean prefer_ipv4 = COConfigurationManager.getBooleanParameter(name);
                    boolean existing = !System.getProperty("java.net.preferIPv4Stack", "false").equalsIgnoreCase("false");
                    if (existing && !done_something) {
                        return;
                    }
                    if (existing != prefer_ipv4) {
                        done_something = true;
                        System.setProperty("java.net.preferIPv4Stack", prefer_ipv4 ? "true" : "false");
                        try {
                            Class<?> plainSocketImpl = getClass().forName("java.net.PlainSocketImpl");
                            Field pref_field = plainSocketImpl.getDeclaredField("preferIPv4Stack");
                            pref_field.setAccessible(true);
                            pref_field.setBoolean(null, prefer_ipv4);
                            Field dual_field = plainSocketImpl.getDeclaredField("useDualStackImpl");
                            dual_field.setAccessible(true);
                            dual_field.setBoolean(null, !prefer_ipv4);
                        } catch (Throwable e) {
                            Debug.out("Failed to update 'preferIPv4Stack'", e);
                        }
                    }
                }
            });
        }
        // socket connect/read timeouts
        int connect_timeout = COConfigurationManager.getIntParameter("Tracker Client Connect Timeout");
        int read_timeout = COConfigurationManager.getIntParameter("Tracker Client Read Timeout");
        if (Logger.isEnabled())
            Logger.log(new LogEvent(LOGID, "TrackerClient: connect timeout = " + connect_timeout + ", read timeout = " + read_timeout));
        System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(connect_timeout * 1000));
        System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(read_timeout * 1000));
        if (COConfigurationManager.getBooleanParameter("Enable.Proxy")) {
            String host = COConfigurationManager.getStringParameter("Proxy.Host");
            String port = COConfigurationManager.getStringParameter("Proxy.Port");
            String user = COConfigurationManager.getStringParameter("Proxy.Username");
            String pass = COConfigurationManager.getStringParameter("Proxy.Password");
            if (user.trim().equalsIgnoreCase("<none>")) {
                user = "";
            }
            if (COConfigurationManager.getBooleanParameter("Enable.SOCKS")) {
                System.setProperty("socksProxyHost", host);
                System.setProperty("socksProxyPort", port);
                if (user.length() > 0) {
                    System.setProperty("java.net.socks.username", user);
                    System.setProperty("java.net.socks.password", pass);
                }
            } else {
                System.setProperty("http.proxyHost", host);
                System.setProperty("http.proxyPort", port);
                System.setProperty("https.proxyHost", host);
                System.setProperty("https.proxyPort", port);
                if (user.length() > 0) {
                    System.setProperty("http.proxyUser", user);
                    System.setProperty("http.proxyPassword", pass);
                    System.setProperty("https.proxyUser", user);
                    System.setProperty("https.proxyPassword", pass);
                }
            }
        }
        SESecurityManager.initialise();
    } finally {
        class_mon.exit();
    }
}
Also used : Field(java.lang.reflect.Field) LogEvent(com.biglybt.core.logging.LogEvent) ParameterListener(com.biglybt.core.config.ParameterListener) InetAddress(java.net.InetAddress)

Example 14 with ParameterListener

use of com.biglybt.core.config.ParameterListener in project BiglyBT by BiglySoftware.

the class ConfigurationChecker method checkConfiguration.

public static void checkConfiguration() {
    try {
        class_mon.enter();
        if (checked)
            return;
        checked = true;
        boolean changed = CustomizationManagerFactory.getSingleton().preInitialize();
        String last_version = COConfigurationManager.getStringParameter("azureus.version", "");
        String this_version = Constants.AZUREUS_VERSION;
        if (!last_version.equals(this_version)) {
            if (!Constants.getBaseVersion(last_version).equals(Constants.getBaseVersion())) {
                COConfigurationManager.setParameter("Last Version", last_version);
                new_version = true;
            }
            if (!COConfigurationManager.hasParameter("First Recorded Version", true)) {
                COConfigurationManager.setParameter("First Recorded Version", last_version.length() == 0 ? this_version : last_version);
            } else {
                String sFirstVersion = COConfigurationManager.getStringParameter("First Recorded Version");
                String sMinVersion = Constants.compareVersions(sFirstVersion, this_version) > 0 ? this_version : sFirstVersion;
                if (last_version.length() > 0) {
                    sMinVersion = Constants.compareVersions(sMinVersion, last_version) > 0 ? last_version : sMinVersion;
                }
                COConfigurationManager.setParameter("First Recorded Version", sMinVersion);
            }
            COConfigurationManager.setParameter("azureus.version", this_version);
            changed = true;
        }
        if (last_version.length() == 0) {
            // this is a virgin installation, i.e. first time running, called only once ever
            new_install = true;
            if (COConfigurationManager.doesParameterNonDefaultExist("diagnostics.tidy_close")) {
                if (!COConfigurationManager.doesParameterNonDefaultExist("Tracker Port Enable")) {
                    COConfigurationManager.setParameter("Tracker Port Enable", true);
                    changed = true;
                }
            }
            // enable Beginner user mode for first time
            if (!COConfigurationManager.doesParameterNonDefaultExist("User Mode")) {
                COConfigurationManager.setParameter("User Mode", 0);
                changed = true;
            }
            // make sure we set and save a random listen port
            if (!COConfigurationManager.doesParameterNonDefaultExist("TCP.Listen.Port")) {
                int rand_port = RandomUtils.generateRandomNetworkListenPort();
                COConfigurationManager.setParameter("TCP.Listen.Port", rand_port);
                COConfigurationManager.setParameter("UDP.Listen.Port", rand_port);
                COConfigurationManager.setParameter("UDP.NonData.Listen.Port", rand_port);
                changed = true;
            }
        } else {
            if (// disable safe selector mode enabled at some point in the past if we're on java 6 or higher and/or not on windows
            COConfigurationManager.getBooleanParameter("network.tcp.enable_safe_selector_mode") && !(Constants.isWindows && (Constants.JAVA_VERSION.startsWith("1.4") || Constants.JAVA_VERSION.startsWith("1.5")))) {
                COConfigurationManager.removeParameter("network.tcp.enable_safe_selector_mode");
                changed = true;
            }
            // transition from tracker-only port override to global port override
            if (COConfigurationManager.doesParameterNonDefaultExist("TCP.Announce.Port")) {
                COConfigurationManager.setParameter("TCP.Listen.Port.Override", COConfigurationManager.getStringParameter("TCP.Announce.Port", ""));
                COConfigurationManager.removeParameter("TCP.Announce.Port");
                changed = true;
            }
            // enable Advanced user mode for existing users by default, to ease 2304-->2306 migrations
            if (!COConfigurationManager.doesParameterNonDefaultExist("User Mode")) {
                COConfigurationManager.setParameter("User Mode", 2);
                changed = true;
            }
        }
        if (!COConfigurationManager.doesParameterNonDefaultExist("UDP.Listen.Port")) {
            COConfigurationManager.setParameter("UDP.Listen.Port", COConfigurationManager.getIntParameter("TCP.Listen.Port"));
            changed = true;
        }
        if (!COConfigurationManager.getBooleanParameter("Plugin.DHT.dht.portdefault", true)) {
            COConfigurationManager.removeParameter("Plugin.DHT.dht.portdefault");
            int tcp_port = COConfigurationManager.getIntParameter("TCP.Listen.Port");
            int udp_port = COConfigurationManager.getIntParameter("UDP.Listen.Port");
            int dht_port = COConfigurationManager.getIntParameter("Plugin.DHT.dht.port", udp_port);
            if (dht_port != udp_port) {
                if (tcp_port == udp_port) {
                    COConfigurationManager.setParameter("UDP.Listen.Port", dht_port);
                }
            }
            changed = true;
        }
        if (!COConfigurationManager.doesParameterNonDefaultExist("UDP.NonData.Listen.Port")) {
            COConfigurationManager.setParameter("UDP.NonData.Listen.Port", COConfigurationManager.getIntParameter("UDP.Listen.Port"));
            changed = true;
        }
        if (!COConfigurationManager.ENABLE_MULTIPLE_UDP_PORTS) {
            int udp1 = COConfigurationManager.getIntParameter("UDP.Listen.Port");
            int udp2 = COConfigurationManager.getIntParameter("UDP.NonData.Listen.Port");
            if (udp1 != udp2) {
                COConfigurationManager.setParameter("UDP.NonData.Listen.Port", udp1);
                changed = true;
            }
        }
        boolean randomize_ports = COConfigurationManager.getBooleanParameter("Listen.Port.Randomize.Enable");
        if (randomize_ports) {
            String random_range = COConfigurationManager.getStringParameter("Listen.Port.Randomize.Range");
            if (random_range == null || random_range.trim().length() == 0) {
                random_range = RandomUtils.LISTEN_PORT_MIN + "-" + RandomUtils.LISTEN_PORT_MAX;
            } else {
                random_range = random_range.trim();
            }
            int min_port = RandomUtils.LISTEN_PORT_MIN;
            int max_port = RandomUtils.LISTEN_PORT_MAX;
            String[] bits = random_range.split("-");
            boolean valid = bits.length == 2;
            if (!valid) {
                // try alternative split based on any non-numeric char (there are lots of unicode chars that
                // look like a - sign...)
                char[] chars = random_range.toCharArray();
                for (int i = 0; i < chars.length - 1; i++) {
                    if (!Character.isDigit(chars[i])) {
                        bits = new String[] { random_range.substring(0, i), random_range.substring(i + 1) };
                        valid = true;
                        break;
                    }
                }
            }
            if (valid) {
                String lhs = bits[0].trim();
                if (lhs.length() > 0) {
                    try {
                        min_port = Integer.parseInt(lhs);
                        valid = min_port > 0 && min_port < 65536;
                    } catch (Throwable e) {
                        valid = false;
                    }
                }
                String rhs = bits[1].trim();
                if (rhs.length() > 0) {
                    try {
                        max_port = Integer.parseInt(rhs);
                        valid = max_port > 0 && max_port < 65536;
                    } catch (Throwable e) {
                        valid = false;
                    }
                }
            }
            if (valid) {
                boolean randomize_together = COConfigurationManager.getBooleanParameter("Listen.Port.Randomize.Together");
                if (randomize_together) {
                    int port = RandomUtils.generateRandomNetworkListenPort(min_port, max_port);
                    COConfigurationManager.setParameter("TCP.Listen.Port", port);
                    COConfigurationManager.setParameter("UDP.Listen.Port", port);
                    COConfigurationManager.setParameter("UDP.NonData.Listen.Port", port);
                } else {
                    int old_udp1 = COConfigurationManager.getIntParameter("UDP.Listen.Port");
                    int old_udp2 = COConfigurationManager.getIntParameter("UDP.NonData.Listen.Port");
                    int port1 = RandomUtils.generateRandomNetworkListenPort(min_port, max_port);
                    COConfigurationManager.setParameter("TCP.Listen.Port", port1);
                    int port2 = RandomUtils.generateRandomNetworkListenPort(min_port, max_port);
                    COConfigurationManager.setParameter("UDP.Listen.Port", port2);
                    if (old_udp1 == old_udp2) {
                        COConfigurationManager.setParameter("UDP.NonData.Listen.Port", port2);
                    } else {
                        int port3 = RandomUtils.generateRandomNetworkListenPort(min_port, max_port);
                        COConfigurationManager.setParameter("UDP.NonData.Listen.Port", port3);
                    }
                }
            }
        }
        int tcp_port = COConfigurationManager.getIntParameter("TCP.Listen.Port");
        if (tcp_port == Constants.INSTANCE_PORT || (tcp_port >= 45100 && tcp_port <= 45103)) {
            int new_tcp_port = RandomUtils.generateRandomNetworkListenPort();
            COConfigurationManager.setParameter("TCP.Listen.Port", new_tcp_port);
            if (COConfigurationManager.getIntParameter("UDP.Listen.Port") == tcp_port) {
                COConfigurationManager.setParameter("UDP.Listen.Port", new_tcp_port);
            }
            if (COConfigurationManager.getIntParameter("UDP.NonData.Listen.Port") == tcp_port) {
                COConfigurationManager.setParameter("UDP.NonData.Listen.Port", new_tcp_port);
            }
            changed = true;
        }
        if (!COConfigurationManager.doesParameterDefaultExist("Tracker Key Enable Client")) {
            boolean old_value = COConfigurationManager.getBooleanParameter("Tracker Key Enable");
            COConfigurationManager.setParameter("Tracker Key Enable Client", old_value);
            COConfigurationManager.setParameter("Tracker Key Enable Server", old_value);
            changed = true;
        }
        int maxUpSpeed = COConfigurationManager.getIntParameter("Max Upload Speed KBs", 0);
        int maxDownSpeed = COConfigurationManager.getIntParameter("Max Download Speed KBs", 0);
        if (maxUpSpeed > 0 && maxUpSpeed < COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED && (maxDownSpeed == 0 || maxDownSpeed > (2 * maxUpSpeed))) {
            changed = true;
            COConfigurationManager.setParameter("Max Upload Speed KBs", COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED);
        }
        int peersRatio = COConfigurationManager.getIntParameter("Stop Peers Ratio", 0);
        if (peersRatio > 14) {
            COConfigurationManager.setParameter("Stop Peers Ratio", 14);
            changed = true;
        }
        int minQueueingShareRatio = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_ShareRatio");
        if (minQueueingShareRatio < 500) {
            COConfigurationManager.setParameter("StartStopManager_iFirstPriority_ShareRatio", 500);
            changed = true;
        }
        int iSeedingMin = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_SeedingMinutes");
        if (iSeedingMin < 90 && iSeedingMin != 0) {
            COConfigurationManager.setParameter("StartStopManager_iFirstPriority_SeedingMinutes", 90);
            changed = true;
        }
        int iDLMin = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_DLMinutes");
        if (iDLMin < 60 * 3 && iDLMin != 0) {
            COConfigurationManager.setParameter("StartStopManager_iFirstPriority_DLMinutes", 60 * 3);
            changed = true;
        }
        int iIgnoreSPRatio = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_ignoreSPRatio");
        if (iIgnoreSPRatio < 10 && iIgnoreSPRatio != 0) {
            COConfigurationManager.setParameter("StartStopManager_iFirstPriority_ignoreSPRatio", 10);
            changed = true;
        }
        String uniqueId = COConfigurationManager.getStringParameter("ID", null);
        if (uniqueId == null || uniqueId.length() != 20) {
            uniqueId = RandomUtils.generateRandomAlphanumerics(20);
            COConfigurationManager.setParameter("ID", uniqueId);
            changed = true;
        }
        int cache_max = COConfigurationManager.getIntParameter("diskmanager.perf.cache.size");
        if (cache_max > COConfigurationManager.CONFIG_CACHE_SIZE_MAX_MB) {
            COConfigurationManager.setParameter("diskmanager.perf.cache.size", COConfigurationManager.CONFIG_CACHE_SIZE_MAX_MB);
            changed = true;
        }
        if (cache_max < 1) {
            // oops
            COConfigurationManager.setParameter("diskmanager.perf.cache.size", 4);
            changed = true;
        }
        /**
         * Special Patch for OSX users
         */
        if (Constants.isOSX) {
            boolean sound = COConfigurationManager.getBooleanParameter("Play Download Finished", true);
            // Command + Q destroys the window, then notifies SWT, making it
            // hard to do a confirmation exit.
            boolean confirmExit = COConfigurationManager.getBooleanParameter("confirmationOnExit");
            if (sound || confirmExit) {
                COConfigurationManager.setParameter("Play Download Finished", false);
                COConfigurationManager.setParameter("confirmationOnExit", false);
                changed = true;
            }
        }
        if (Constants.isOSX) {
            if (COConfigurationManager.getBooleanParameter("enable_small_osx_fonts")) {
                System.setProperty("org.eclipse.swt.internal.carbon.smallFonts", "1");
            } else {
                System.getProperties().remove("org.eclipse.swt.internal.carbon.smallFonts");
            }
            System.setProperty("org.eclipse.swt.internal.carbon.noFocusRing", "1");
        }
        // remove a trailing slash, due to user manually entering the path in config
        String[] path_params = { "Default save path", "General_sDefaultTorrent_Directory", "Watch Torrent Folder Path", "Completed Files Directory" };
        for (int i = 0; i < path_params.length; i++) {
            if (path_params[i].endsWith(SystemProperties.SEP)) {
                String new_path = path_params[i].substring(0, path_params[i].length() - 1);
                COConfigurationManager.setParameter(path_params[i], new_path);
                changed = true;
            }
        }
        // cause display text problems, so let's delete them.
        if (ConfigurationManager.getInstance().doesParameterNonDefaultExist("General_bEnableLanguageUpdate")) {
            File user_dir = new File(SystemProperties.getUserPath());
            File[] files = user_dir.listFiles(new FilenameFilter() {

                @Override
                public boolean accept(File dir, String name) {
                    if (name.startsWith("MessagesBundle") && name.endsWith(".properties")) {
                        return true;
                    }
                    return false;
                }
            });
            if (files != null) {
                for (int i = 0; i < files.length; i++) {
                    File file = files[i];
                    if (file.exists()) {
                        if (Logger.isEnabled())
                            Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING, "ConfigurationChecker:: removing old language file: " + file.getAbsolutePath()));
                        file.renameTo(new File(file.getParentFile(), "delme" + file.getName()));
                    }
                }
            }
            ConfigurationManager.getInstance().removeParameter("General_bEnableLanguageUpdate");
            changed = true;
        }
        // 4511: confirm.delete.content (boolean) changed to tb..confirm.delete.content (long)
        final String CFG_CONFIRM_DELETE_CONTENT = "confirm.delete.content";
        if (ConfigurationManager.getInstance().doesParameterNonDefaultExist(CFG_CONFIRM_DELETE_CONTENT)) {
            boolean confirm = COConfigurationManager.getBooleanParameter(CFG_CONFIRM_DELETE_CONTENT);
            if (!confirm && !ConfigurationManager.getInstance().doesParameterNonDefaultExist("tb.confirm.delete.content")) {
                COConfigurationManager.setParameter("tb.confirm.delete.content", 1);
            }
            COConfigurationManager.removeParameter(CFG_CONFIRM_DELETE_CONTENT);
            changed = true;
        }
        // 5601 propagate swt crash settings
        {
            if (System.getProperty(SystemProperties.SYSPROP_INTERNAL_BROWSER_DISABLE, "0").equals("1")) {
                if (!COConfigurationManager.getBooleanParameter("browser.internal.disable", false)) {
                    COConfigurationManager.setParameter("browser.internal.disable", true);
                    changed = true;
                }
            }
            if (COConfigurationManager.getBooleanParameter("azpromo.dump.disable.plugin", false)) {
                if (!COConfigurationManager.doesParameterNonDefaultExist("browser.internal.disable")) {
                    COConfigurationManager.setParameter("browser.internal.disable", true);
                    changed = true;
                }
            }
            COConfigurationManager.addAndFireParameterListener("browser.internal.disable", new ParameterListener() {

                @Override
                public void parameterChanged(String parameterName) {
                    if (COConfigurationManager.getBooleanParameter("browser.internal.disable", false)) {
                        COConfigurationManager.setParameter("azpromo.dump.disable.plugin", true);
                        COConfigurationManager.setDirty();
                    }
                }
            });
        }
        if (FeatureAvailability.isAutoSpeedDefaultClassic()) {
            // 1 == classic, 2 == beta
            ConfigurationDefaults.getInstance().addParameter(SpeedManagerImpl.CONFIG_VERSION, 1);
        }
        int check_level = COConfigurationManager.getIntParameter("config.checker.level", 0);
        if (check_level < 1) {
            COConfigurationManager.setParameter("config.checker.level", 1);
            changed = true;
            // initial setting of auto-config for upload slots etc
            String[] params = { "Max Uploads", "enable.seedingonly.maxuploads", "Max Uploads Seeding", "Max.Peer.Connections.Per.Torrent", "Max.Peer.Connections.Per.Torrent.When.Seeding.Enable", "Max.Peer.Connections.Per.Torrent.When.Seeding", "Max.Peer.Connections.Total", "Max Seeds Per Torrent" };
            boolean has_been_set = false;
            for (String param : params) {
                if (COConfigurationManager.doesParameterNonDefaultExist(param)) {
                    has_been_set = true;
                    break;
                }
            }
            if (has_been_set) {
                COConfigurationManager.setParameter("Auto Adjust Transfer Defaults", false);
            }
        }
        if (Constants.isOSX && check_level < 2) {
            // turn on piece-reorder mode for osx
            COConfigurationManager.setParameter("config.checker.level", 2);
            changed = true;
            if (!COConfigurationManager.getBooleanParameter("Zero New")) {
                COConfigurationManager.setParameter("Enable reorder storage mode", true);
            }
        }
        if (COConfigurationManager.doesParameterNonDefaultExist("Watch Torrent Folder Interval")) {
            long mins = COConfigurationManager.getIntParameter("Watch Torrent Folder Interval");
            COConfigurationManager.removeParameter("Watch Torrent Folder Interval");
            COConfigurationManager.setParameter("Watch Torrent Folder Interval Secs", 60 * mins);
            changed = true;
        }
        if (changed) {
            COConfigurationManager.save();
        }
        setupVerifier();
    } finally {
        class_mon.exit();
    }
    ConfigurationDefaults.getInstance().runVerifiers();
}
Also used : LogEvent(com.biglybt.core.logging.LogEvent) FilenameFilter(java.io.FilenameFilter) ParameterListener(com.biglybt.core.config.ParameterListener) File(java.io.File)

Example 15 with ParameterListener

use of com.biglybt.core.config.ParameterListener in project BiglyBT by BiglySoftware.

the class TranscodeQueueImpl method initialise.

protected void initialise() {
    loadConfig();
    COConfigurationManager.addAndFireParameterListeners(new String[] { "xcode.queue.paused", "xcode.queue.maxbps" }, new ParameterListener() {

        @Override
        public void parameterChanged(String name) {
            paused = COConfigurationManager.getBooleanParameter("xcode.queue.paused", false);
            max_bytes_per_sec = COConfigurationManager.getIntParameter("xcode.queue.maxbps", 0);
        }
    });
    DelayedTask delayed_task = UtilitiesImpl.addDelayedTask("TranscodeQueue:schedule", new Runnable() {

        @Override
        public void run() {
            schedule();
        }
    });
    delayed_task.queue();
}
Also used : ParameterListener(com.biglybt.core.config.ParameterListener) DelayedTask(com.biglybt.pif.utils.DelayedTask)

Aggregations

ParameterListener (com.biglybt.core.config.ParameterListener)43 CoreRunningListener (com.biglybt.core.CoreRunningListener)5 LogAlert (com.biglybt.core.logging.LogAlert)5 PriorityParameterListener (com.biglybt.core.config.PriorityParameterListener)4 LogEvent (com.biglybt.core.logging.LogEvent)4 MenuItemListener (com.biglybt.pif.ui.menus.MenuItemListener)4 ArrayList (java.util.ArrayList)4 Core (com.biglybt.core.Core)3 ConfigurationManager (com.biglybt.core.config.impl.ConfigurationManager)3 GlobalManager (com.biglybt.core.global.GlobalManager)3 GlobalManagerAdapter (com.biglybt.core.global.GlobalManagerAdapter)3 GridData (org.eclipse.swt.layout.GridData)3 GridLayout (org.eclipse.swt.layout.GridLayout)3 DownloadManager (com.biglybt.core.download.DownloadManager)2 GlobalManagerListener (com.biglybt.core.global.GlobalManagerListener)2 TOTorrent (com.biglybt.core.torrent.TOTorrent)2 AERunnable (com.biglybt.core.util.AERunnable)2 MenuItem (com.biglybt.pif.ui.menus.MenuItem)2 MenuItemFillListener (com.biglybt.pif.ui.menus.MenuItemFillListener)2 DelayedTask (com.biglybt.pif.utils.DelayedTask)2