From b4d1ea1d5df0812b13b60da1d085d0e6b24459de Mon Sep 17 00:00:00 2001 From: tonikelope Date: Tue, 2 Jan 2018 22:06:30 +0100 Subject: [PATCH] 2.67 --- nbproject/project.properties | 3 +- src/megabasterd/AboutDialog.form | 31 +++-- src/megabasterd/AboutDialog.java | 25 ++-- src/megabasterd/ChunkUploader.java | 6 +- src/megabasterd/ChunkUploaderMono.java | 6 +- src/megabasterd/Download.java | 31 ++--- src/megabasterd/DownloadView.java | 6 +- src/megabasterd/FileGrabberDialog.java | 8 +- src/megabasterd/FolderLinkDialog.java | 4 +- src/megabasterd/GetMasterPasswordDialog.java | 5 +- src/megabasterd/LinkGrabberDialog.form | 2 +- src/megabasterd/LinkGrabberDialog.java | 18 ++- src/megabasterd/MainPanel.java | 77 ++++++----- src/megabasterd/MainPanelView.form | 25 ++-- src/megabasterd/MainPanelView.java | 39 ++++-- src/megabasterd/MiscTools.java | 2 +- src/megabasterd/SetMasterPasswordDialog.java | 7 +- src/megabasterd/SettingsDialog.form | 112 +++++++++++----- src/megabasterd/SettingsDialog.java | 132 ++++++++++++++----- src/megabasterd/StreamerDialog.form | 2 +- src/megabasterd/StreamerDialog.java | 10 +- src/megabasterd/TransferenceManager.java | 62 ++++++--- src/megabasterd/UploadView.java | 13 +- 23 files changed, 411 insertions(+), 215 deletions(-) diff --git a/nbproject/project.properties b/nbproject/project.properties index f8bc3acbb..ebbc6f37b 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -40,7 +40,8 @@ javac.classpath=\ ${file.reference.sqlite-jdbc-3.8.11.2.jar}:\ ${file.reference.jackson-core-asl-1.9.13.jar}:\ ${file.reference.jackson-mapper-asl-1.9.13.jar}:\ - ${libs.ApacheHttpClient.classpath} + ${libs.ApacheHttpClient.classpath}:\ + ${libs.absolutelayout.classpath} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/src/megabasterd/AboutDialog.form b/src/megabasterd/AboutDialog.form index 18aaf2790..5112d1750 100644 --- a/src/megabasterd/AboutDialog.form +++ b/src/megabasterd/AboutDialog.form @@ -7,6 +7,7 @@ + @@ -27,27 +28,32 @@ - + - - - - - + + + - + - + - + - + - + + + + + + + + @@ -66,7 +72,7 @@ - + @@ -191,6 +197,7 @@ + diff --git a/src/megabasterd/AboutDialog.java b/src/megabasterd/AboutDialog.java index 6fe0ef9c2..21fd1adb5 100644 --- a/src/megabasterd/AboutDialog.java +++ b/src/megabasterd/AboutDialog.java @@ -23,7 +23,9 @@ public final class AboutDialog extends javax.swing.JDialog { initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); + updateFonts(this.getRootPane(), DEFAULT_FONT, parent.getMain_panel().getZoom_factor()); + + pack(); } /** @@ -47,6 +49,7 @@ public final class AboutDialog extends javax.swing.JDialog { setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("About"); setIconImage(null); + setResizable(false); title_label.setFont(new java.awt.Font("Dialog", 1, 48)); // NOI18N title_label.setText("MegaBasterd " + VERSION); @@ -112,6 +115,7 @@ public final class AboutDialog extends javax.swing.JDialog { check_version_button.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N check_version_button.setText("Check version"); + check_version_button.setDoubleBuffered(true); check_version_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { check_version_buttonActionPerformed(evt); @@ -122,12 +126,10 @@ public final class AboutDialog extends javax.swing.JDialog { getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createSequentialGroup() .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(subtitle_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(title_label, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 636, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(made_in_spain_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -136,10 +138,15 @@ public final class AboutDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(mc_logo_label)) .addComponent(author_webpage_label, javax.swing.GroupLayout.Alignment.TRAILING))) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() + .addGroup(layout.createSequentialGroup() .addComponent(mcdown_url_button) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(check_version_button))) + .addComponent(check_version_button)) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(title_label) + .addComponent(subtitle_label)) + .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( @@ -153,7 +160,7 @@ public final class AboutDialog extends javax.swing.JDialog { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(mcdown_url_button) .addComponent(check_version_button)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(made_in_spain_label) .addGroup(layout.createSequentialGroup() diff --git a/src/megabasterd/ChunkUploader.java b/src/megabasterd/ChunkUploader.java index 5ef1616f8..1076983ae 100644 --- a/src/megabasterd/ChunkUploader.java +++ b/src/megabasterd/ChunkUploader.java @@ -109,7 +109,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { String worker_url = _upload.getUl_url(); Chunk chunk; - int reads, conta_error, re, http_status, tot_bytes_up; + int reads, conta_error, http_status, tot_bytes_up; boolean error; OutputStream out; @@ -126,9 +126,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { do { - re = f.read(buffer, 0, Math.min((int) (chunk.getSize() - chunk.getOutputStream().size()), buffer.length)); - - chunk.getOutputStream().write(buffer, 0, re); + chunk.getOutputStream().write(buffer, 0, f.read(buffer, 0, Math.min((int) (chunk.getSize() - chunk.getOutputStream().size()), buffer.length))); } while (!_exit && !_upload.isStopped() && chunk.getOutputStream().size() < chunk.getSize()); diff --git a/src/megabasterd/ChunkUploaderMono.java b/src/megabasterd/ChunkUploaderMono.java index 599d35ef3..ccf0b4065 100644 --- a/src/megabasterd/ChunkUploaderMono.java +++ b/src/megabasterd/ChunkUploaderMono.java @@ -45,7 +45,7 @@ public class ChunkUploaderMono extends ChunkUploader { String worker_url = getUpload().getUl_url(); Chunk chunk; - int reads, conta_error, re, http_status, tot_bytes_up = -1; + int reads, conta_error, http_status, tot_bytes_up = -1; boolean error = false; try (CloseableHttpClient httpclient = getApacheKissHttpClient(); RandomAccessFile f = new RandomAccessFile(getUpload().getFile_name(), "r");) { @@ -68,9 +68,7 @@ public class ChunkUploaderMono extends ChunkUploader { do { - re = f.read(buffer, 0, Math.min((int) (chunk.getSize() - chunk.getOutputStream().size()), buffer.length)); - - chunk.getOutputStream().write(buffer, 0, re); + chunk.getOutputStream().write(buffer, 0, f.read(buffer, 0, Math.min((int) (chunk.getSize() - chunk.getOutputStream().size()), buffer.length))); } while (!isExit() && !getUpload().isStopped() && chunk.getOutputStream().size() < chunk.getSize()); diff --git a/src/megabasterd/Download.java b/src/megabasterd/Download.java index 34e4d4e2f..a74a02e8b 100644 --- a/src/megabasterd/Download.java +++ b/src/megabasterd/Download.java @@ -1166,34 +1166,27 @@ public final class Download implements Transference, Runnable, SecureSingleThrea } private boolean verifyFileCBCMAC(String filename) throws FileNotFoundException, Exception, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { + int[] int_key = bin2i32a(UrlBASE642Bin(_file_key)); - - int[] iv = new int[2]; - - iv[0] = int_key[4]; - iv[1] = int_key[5]; - - int[] meta_mac = new int[2]; - - meta_mac[0] = int_key[6]; - meta_mac[1] = int_key[7]; - + int[] iv = new int[]{int_key[4], int_key[5]}; + int[] meta_mac = new int[]{int_key[6], int_key[7]}; int[] file_mac = {0, 0, 0, 0}; - int[] cbc_iv = {0, 0, 0, 0}; Cipher cryptor = genCrypter("AES", "AES/CBC/NoPadding", _chunkwriter.getByte_file_key(), i32a2bin(cbc_iv)); try (FileInputStream is = new FileInputStream(new File(filename))) { - long chunk_id = 1; + long chunk_id = 1L; long tot = 0L; byte[] chunk_buffer = new byte[MainPanel.DEFAULT_BYTE_BUFFER_SIZE]; byte[] byte_block = new byte[16]; int[] int_block; - int re, reads, to_read; + int reads; + try { while (!_exit) { + Chunk chunk = new Chunk(chunk_id++, _file_size, null); tot += chunk.getSize(); @@ -1201,18 +1194,16 @@ public final class Download implements Transference, Runnable, SecureSingleThrea int[] chunk_mac = {iv[0], iv[1], iv[0], iv[1]}; do { - to_read = chunk.getSize() - chunk.getOutputStream().size() >= chunk_buffer.length ? chunk_buffer.length : (int) (chunk.getSize() - chunk.getOutputStream().size()); - - re = is.read(chunk_buffer, 0, to_read); - - chunk.getOutputStream().write(chunk_buffer, 0, re); + chunk.getOutputStream().write(chunk_buffer, 0, is.read(chunk_buffer, 0, Math.min((int) (chunk.getSize() - chunk.getOutputStream().size()), chunk_buffer.length))); } while (!_exit && chunk.getOutputStream().size() < chunk.getSize()); InputStream chunk_is = chunk.getInputStream(); while (!_exit && (reads = chunk_is.read(byte_block)) != -1) { + if (reads < byte_block.length) { + for (int i = reads; i < byte_block.length; i++) { byte_block[i] = 0; } @@ -1234,7 +1225,6 @@ public final class Download implements Transference, Runnable, SecureSingleThrea file_mac = bin2i32a(cryptor.doFinal(i32a2bin(file_mac))); setProgress(tot); - } } catch (ChunkInvalidException e) { @@ -1244,7 +1234,6 @@ public final class Download implements Transference, Runnable, SecureSingleThrea return (cbc[0] == meta_mac[0] && cbc[1] == meta_mac[1]); } - } public void stopDownloader() { diff --git a/src/megabasterd/DownloadView.java b/src/megabasterd/DownloadView.java index 8ed27cde4..3dd5f4b68 100644 --- a/src/megabasterd/DownloadView.java +++ b/src/megabasterd/DownloadView.java @@ -89,7 +89,7 @@ public final class DownloadView extends javax.swing.JPanel implements Transferen initComponents(); - updateFonts(this, DEFAULT_FONT, ZOOM_FACTOR); + updateFonts(this, DEFAULT_FONT, download.getMain_panel().getZoom_factor()); _download = download; @@ -98,15 +98,17 @@ public final class DownloadView extends javax.swing.JPanel implements Transferen ((JSpinner.DefaultEditor) slots_spinner.getEditor()).getTextField().setEditable(false); speed_label.setForeground(new Color(0, 128, 255)); - progress_pbar.setMinimum(0); progress_pbar.setMaximum(MAX_VALUE); progress_pbar.setStringPainted(true); + status_label.setText(""); + for (JComponent c : new JComponent[]{slots_spinner, slots_label, pause_button, stop_button, speed_label, progress_pbar, keep_temp_checkbox, file_name_label, close_button, copy_link_button, restart_button, file_size_label, open_folder_button}) { c.setVisible(false); } + } public void hideAllExceptStatus() { diff --git a/src/megabasterd/FileGrabberDialog.java b/src/megabasterd/FileGrabberDialog.java index c8495a21b..b6916a48c 100644 --- a/src/megabasterd/FileGrabberDialog.java +++ b/src/megabasterd/FileGrabberDialog.java @@ -63,9 +63,11 @@ public final class FileGrabberDialog extends javax.swing.JDialog { super(parent, modal); + _main_panel = ((MainPanelView) parent).getMain_panel(); + initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); + updateFonts(this.getRootPane(), DEFAULT_FONT, _main_panel.getZoom_factor()); _last_selected_account = null; _total_space = 0L; @@ -76,8 +78,6 @@ public final class FileGrabberDialog extends javax.swing.JDialog { dir_name_textfield.addMouseListener(new ContextMenuMouseListener()); - _main_panel = ((MainPanelView) parent).getMain_panel(); - if (_main_panel.getMega_accounts().size() > 0) { for (Object o : _main_panel.getMega_accounts().keySet()) { @@ -90,6 +90,8 @@ public final class FileGrabberDialog extends javax.swing.JDialog { used_space_label.setForeground(Color.red); used_space_label.setText("No MEGA accounts available (Go to Settings > Accounts)"); } + + pack(); } /** diff --git a/src/megabasterd/FolderLinkDialog.java b/src/megabasterd/FolderLinkDialog.java index 5ce7f40b5..2b0c75476 100644 --- a/src/megabasterd/FolderLinkDialog.java +++ b/src/megabasterd/FolderLinkDialog.java @@ -54,7 +54,7 @@ public final class FolderLinkDialog extends javax.swing.JDialog { initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); + updateFonts(this.getRootPane(), DEFAULT_FONT, ((MainPanelView) parent).getMain_panel().getZoom_factor()); _mega_error = false; _total_space = 0L; @@ -72,6 +72,8 @@ public final class FolderLinkDialog extends javax.swing.JDialog { _genDownloadLiks(); } + + pack(); } /** diff --git a/src/megabasterd/GetMasterPasswordDialog.java b/src/megabasterd/GetMasterPasswordDialog.java index 171ae2e06..811866ba8 100644 --- a/src/megabasterd/GetMasterPasswordDialog.java +++ b/src/megabasterd/GetMasterPasswordDialog.java @@ -59,9 +59,10 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { */ public GetMasterPasswordDialog(java.awt.Frame parent, boolean modal, String current_pass_hash, String salt) { super(parent, modal); + initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); + updateFonts(this.getRootPane(), DEFAULT_FONT, ((MainPanelView) parent).getMain_panel().getZoom_factor()); _current_pass_hash = current_pass_hash; @@ -71,6 +72,8 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { _salt = salt; + pack(); + } /** diff --git a/src/megabasterd/LinkGrabberDialog.form b/src/megabasterd/LinkGrabberDialog.form index 10a4ced62..a6cefb77f 100644 --- a/src/megabasterd/LinkGrabberDialog.form +++ b/src/megabasterd/LinkGrabberDialog.form @@ -73,7 +73,7 @@ - + diff --git a/src/megabasterd/LinkGrabberDialog.java b/src/megabasterd/LinkGrabberDialog.java index 444005ca9..6575ba287 100644 --- a/src/megabasterd/LinkGrabberDialog.java +++ b/src/megabasterd/LinkGrabberDialog.java @@ -61,11 +61,11 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip super(parent, modal); + _main_panel = ((MainPanelView) parent).getMain_panel(); + initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); - - _main_panel = ((MainPanelView) parent).getMain_panel(); + updateFonts(this.getRootPane(), DEFAULT_FONT, _main_panel.getZoom_factor()); _download = false; @@ -87,6 +87,8 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip use_mega_account_down_label.setEnabled(false); use_mega_account_down_label.setVisible(false); } + + pack(); } /** @@ -213,7 +215,7 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip .addComponent(change_dir_button) .addComponent(down_dir_to_label) .addComponent(download_dir_label) - .addComponent(dance_button, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(dance_button)) .addContainerGap()) ); @@ -243,6 +245,8 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip _download_path = file.getAbsolutePath(); download_dir_label.setText(truncateText(_download_path, 80)); + + pack(); } }//GEN-LAST:event_change_dir_buttonActionPerformed @@ -256,6 +260,8 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip dance_button.setEnabled(false); + pack(); + javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser(); filechooser.setDialogTitle("Select DLC container"); @@ -330,6 +336,8 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip links_textarea.setEnabled(true); dance_button.setEnabled(true); + + pack(); } }); @@ -342,6 +350,8 @@ public final class LinkGrabberDialog extends javax.swing.JDialog implements Clip links_textarea.setEnabled(true); dance_button.setEnabled(true); + + pack(); } }//GEN-LAST:event_dlc_buttonActionPerformed diff --git a/src/megabasterd/MainPanel.java b/src/megabasterd/MainPanel.java index 08b1709d6..9b0cdbb8a 100644 --- a/src/megabasterd/MainPanel.java +++ b/src/megabasterd/MainPanel.java @@ -47,14 +47,14 @@ import org.apache.http.auth.UsernamePasswordCredentials; */ public final class MainPanel { - public static final String VERSION = "2.66"; + public static final String VERSION = "2.67"; public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; public static final int STREAMER_PORT = 1337; public static final int WATCHDOG_PORT = 1338; public static final int DEFAULT_MEGA_PROXY_PORT = 9999; public static final Font DEFAULT_FONT = createAndRegisterFont("Itim-Regular.ttf"); - public static final float ZOOM_FACTOR = 1.1f; + public static final float ZOOM_FACTOR = 1.0f; public static final String DEFAULT_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0"; public static final String ICON_FILE = "mbasterd_med.png"; public static final ExecutorService THREAD_POOL = newCachedThreadPool(); @@ -63,14 +63,10 @@ public final class MainPanel { private static Credentials _proxy_credentials; private static boolean _use_proxy; - public static void main(String args[]) { setNimbusLookAndFeel(); - UIManager.put("OptionPane.messageFont", DEFAULT_FONT.deriveFont(15f * ZOOM_FACTOR)); - UIManager.put("OptionPane.buttonFont", DEFAULT_FONT.deriveFont(13f * ZOOM_FACTOR)); - if (args.length > 0) { try { @@ -116,9 +112,36 @@ public final class MainPanel { private MegaProxyServer _mega_proxy_server; private int _megacrypter_reverse_port; private boolean _megacrypter_reverse; + private float _zoom_factor; public MainPanel() { + _restart = false; + + _elc_accounts = new HashMap<>(); + + _master_pass = null; + + _mega_active_accounts = new HashMap<>(); + + _proxy_host = null; + + _proxy_port = 3128; + + _proxy_credentials = null; + + _use_proxy = false; + + _use_smart_proxy = false; + + _use_smart_proxy_url = null; + + loadUserSettings(); + + UIManager.put("OptionPane.messageFont", DEFAULT_FONT.deriveFont(15f * getZoom_factor())); + + UIManager.put("OptionPane.buttonFont", DEFAULT_FONT.deriveFont(13f * getZoom_factor())); + _view = new MainPanelView(this); if (checkAppIsRunning()) { @@ -142,28 +165,6 @@ public final class MainPanel { Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); } - _restart = false; - - _elc_accounts = new HashMap<>(); - - _master_pass = null; - - _mega_active_accounts = new HashMap<>(); - - _proxy_host = null; - - _proxy_port = 3128; - - _proxy_credentials = null; - - _use_proxy = false; - - _use_smart_proxy = false; - - _use_smart_proxy_url = null; - - loadUserSettings(); - THREAD_POOL.execute((_download_manager = new DownloadManager(this))); THREAD_POOL.execute((_upload_manager = new UploadManager(this))); @@ -176,9 +177,8 @@ public final class MainPanel { THREAD_POOL.execute((_clipboardspy = new ClipboardSpy())); - _streamserver = new KissVideoStreamServer(this); - try { + _streamserver = new KissVideoStreamServer(this); _streamserver.start(STREAMER_PORT, "/video"); } catch (IOException ex) { Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex); @@ -198,8 +198,11 @@ public final class MainPanel { }); if (_megacrypter_reverse) { + _mega_proxy_server = new MegaProxyServer(this, UUID.randomUUID().toString(), _megacrypter_reverse_port); + THREAD_POOL.execute(_mega_proxy_server); + } else { _mega_proxy_server = null; } @@ -207,6 +210,7 @@ public final class MainPanel { if (_use_smart_proxy) { _proxy_manager = new SmartMegaProxyManager(this, _use_smart_proxy_url); + THREAD_POOL.execute(_proxy_manager); } @@ -225,6 +229,10 @@ public final class MainPanel { resumeUploads(); } + public float getZoom_factor() { + return _zoom_factor; + } + public void setProxy_manager(SmartMegaProxyManager _proxy_manager) { this._proxy_manager = _proxy_manager; } @@ -428,6 +436,15 @@ public final class MainPanel { } public void loadUserSettings() { + + String zoom_factor = selectSettingValue("font_zoom"); + + if (zoom_factor != null) { + _zoom_factor = Float.parseFloat(zoom_factor) / 100; + } else { + _zoom_factor = ZOOM_FACTOR; + } + String def_slots = selectSettingValue("default_slots_down"); if (def_slots != null) { diff --git a/src/megabasterd/MainPanelView.form b/src/megabasterd/MainPanelView.form index 77a6075c4..c8db63347 100644 --- a/src/megabasterd/MainPanelView.form +++ b/src/megabasterd/MainPanelView.form @@ -1,6 +1,6 @@ -
+ @@ -171,11 +171,11 @@ - + - + - + @@ -192,10 +192,10 @@ - + - - + + @@ -220,6 +220,7 @@ + @@ -231,6 +232,7 @@ + @@ -241,6 +243,7 @@ + @@ -273,7 +276,7 @@ - + @@ -290,7 +293,7 @@ - + @@ -399,7 +402,7 @@ - + @@ -416,7 +419,7 @@ - + diff --git a/src/megabasterd/MainPanelView.java b/src/megabasterd/MainPanelView.java index 275da9e34..da7eaeeb0 100644 --- a/src/megabasterd/MainPanelView.java +++ b/src/megabasterd/MainPanelView.java @@ -21,6 +21,7 @@ import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; import static javax.swing.JOptionPane.QUESTION_MESSAGE; import static javax.swing.JOptionPane.YES_NO_CANCEL_OPTION; import static javax.swing.JOptionPane.showOptionDialog; @@ -130,7 +131,8 @@ public final class MainPanelView extends javax.swing.JFrame { @Override public void run() { - getKiss_server_status().setText(status); + getKiss_server_status().setText(status + " "); + pack(); } }); @@ -143,7 +145,8 @@ public final class MainPanelView extends javax.swing.JFrame { @Override public void run() { - getSmart_proxy_status().setText(status); + getSmart_proxy_status().setText(status + " "); + pack(); } }); @@ -156,7 +159,8 @@ public final class MainPanelView extends javax.swing.JFrame { @Override public void run() { - getMc_reverse_status().setText(status); + getMc_reverse_status().setText(status + " "); + pack(); } }); @@ -168,7 +172,7 @@ public final class MainPanelView extends javax.swing.JFrame { initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); + updateFonts(getRootPane(), DEFAULT_FONT, _main_panel.getZoom_factor()); setTitle("MegaBasterd " + VERSION); @@ -186,6 +190,8 @@ public final class MainPanelView extends javax.swing.JFrame { clean_all_up_menu.setEnabled(false); jScrollPane_down.getVerticalScrollBar().setUnitIncrement(20); jScrollPane_up.getVerticalScrollBar().setUnitIncrement(20); + + pack(); } /** @@ -241,13 +247,16 @@ public final class MainPanelView extends javax.swing.JFrame { kiss_server_status.setFont(new java.awt.Font("Dialog", 2, 14)); // NOI18N kiss_server_status.setForeground(new java.awt.Color(102, 102, 102)); + kiss_server_status.setText("kiss server"); kiss_server_status.setDoubleBuffered(true); mc_reverse_status.setFont(new java.awt.Font("Dialog", 2, 14)); // NOI18N mc_reverse_status.setForeground(new java.awt.Color(102, 102, 102)); + mc_reverse_status.setText("mc reverse"); smart_proxy_status.setFont(new java.awt.Font("Dialog", 2, 14)); // NOI18N smart_proxy_status.setForeground(new java.awt.Color(102, 102, 102)); + smart_proxy_status.setText("smart proxy"); smart_proxy_status.setDoubleBuffered(true); jTabbedPane1.setDoubleBuffered(true); @@ -298,7 +307,7 @@ public final class MainPanelView extends javax.swing.JFrame { .addComponent(pause_all_down_button)) .addGroup(downloads_panelLayout.createSequentialGroup() .addContainerGap() - .addComponent(status_down_label, javax.swing.GroupLayout.DEFAULT_SIZE, 699, Short.MAX_VALUE) + .addComponent(status_down_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(close_all_finished_down_button)) .addComponent(jScrollPane_down) @@ -312,7 +321,7 @@ public final class MainPanelView extends javax.swing.JFrame { .addComponent(close_all_finished_down_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(status_down_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane_down, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE) + .addComponent(jScrollPane_down, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(down_remtime_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -367,7 +376,7 @@ public final class MainPanelView extends javax.swing.JFrame { .addComponent(pause_all_up_button)) .addGroup(uploads_panelLayout.createSequentialGroup() .addContainerGap() - .addComponent(status_up_label, javax.swing.GroupLayout.DEFAULT_SIZE, 699, Short.MAX_VALUE) + .addComponent(status_up_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(close_all_finished_up_button)) .addComponent(jScrollPane_up) @@ -381,7 +390,7 @@ public final class MainPanelView extends javax.swing.JFrame { .addComponent(close_all_finished_up_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(status_up_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane_up, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE) + .addComponent(jScrollPane_up, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(up_remtime_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -504,11 +513,11 @@ public final class MainPanelView extends javax.swing.JFrame { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jTabbedPane1) .addGroup(layout.createSequentialGroup() - .addComponent(kiss_server_status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(kiss_server_status, javax.swing.GroupLayout.DEFAULT_SIZE, 206, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(mc_reverse_status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(mc_reverse_status, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(smart_proxy_status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(smart_proxy_status, javax.swing.GroupLayout.DEFAULT_SIZE, 215, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(logo_label))) .addContainerGap()) @@ -521,10 +530,10 @@ public final class MainPanelView extends javax.swing.JFrame { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(logo_label) - .addComponent(smart_proxy_status, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(smart_proxy_status) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(mc_reverse_status, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(kiss_server_status, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(mc_reverse_status) + .addComponent(kiss_server_status))) .addGap(2, 2, 2)) ); @@ -828,6 +837,8 @@ public final class MainPanelView extends javax.swing.JFrame { if (_main_panel.isRestart()) { + JOptionPane.showMessageDialog(this, "MegaBasterd will restart", "Restart required", JOptionPane.WARNING_MESSAGE); + restartApplication(1); } diff --git a/src/megabasterd/MiscTools.java b/src/megabasterd/MiscTools.java index 35cdb3740..ea2dca011 100644 --- a/src/megabasterd/MiscTools.java +++ b/src/megabasterd/MiscTools.java @@ -288,7 +288,7 @@ public final class MiscTools { Font old_font = component.getFont(); - Font new_font = font.deriveFont(old_font.getStyle(), (float) Math.floor(old_font.getSize() * zoom_factor)); + Font new_font = font.deriveFont(old_font.getStyle(), (float) Math.round(old_font.getSize() * zoom_factor)); component.setFont(new_font); } diff --git a/src/megabasterd/SetMasterPasswordDialog.java b/src/megabasterd/SetMasterPasswordDialog.java index 757f71fc5..2d076261d 100644 --- a/src/megabasterd/SetMasterPasswordDialog.java +++ b/src/megabasterd/SetMasterPasswordDialog.java @@ -49,9 +49,12 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { * Creates new form MegaPassDialog */ public SetMasterPasswordDialog(java.awt.Frame parent, boolean modal, String salt) { + super(parent, modal); + initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); + + updateFonts(this.getRootPane(), DEFAULT_FONT, ((MainPanelView) parent).getMain_panel().getZoom_factor()); _pass_ok = false; @@ -60,6 +63,8 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { _new_pass_hash = null; _salt = salt; + + pack(); } /** diff --git a/src/megabasterd/SettingsDialog.form b/src/megabasterd/SettingsDialog.form index 62ddb6f60..f591f6efa 100644 --- a/src/megabasterd/SettingsDialog.form +++ b/src/megabasterd/SettingsDialog.form @@ -30,10 +30,10 @@ + + - - - + @@ -118,7 +118,7 @@ - + @@ -146,26 +146,26 @@ - + - + - + - + @@ -177,14 +177,10 @@ - - - - - - - - + + + + @@ -206,7 +202,7 @@ - + @@ -552,7 +548,7 @@ - + @@ -564,7 +560,7 @@ - + @@ -572,8 +568,8 @@ - - + + @@ -615,7 +611,7 @@ - + @@ -774,7 +770,7 @@ - + @@ -783,7 +779,7 @@ - + @@ -817,7 +813,9 @@ - + + + @@ -920,7 +918,9 @@ - + + + @@ -985,11 +985,23 @@ - - + + + + + + + + + + + + + + @@ -1000,7 +1012,16 @@ - + + + + + + + + + + @@ -1124,7 +1145,7 @@ - + @@ -1136,7 +1157,7 @@ - + @@ -1227,7 +1248,7 @@ - + @@ -1238,7 +1259,7 @@ - + @@ -1246,6 +1267,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/megabasterd/SettingsDialog.java b/src/megabasterd/SettingsDialog.java index 42c28f67d..b26e28d15 100644 --- a/src/megabasterd/SettingsDialog.java +++ b/src/megabasterd/SettingsDialog.java @@ -64,13 +64,14 @@ public final class SettingsDialog extends javax.swing.JDialog { } public SettingsDialog(javax.swing.JFrame parent, boolean modal) { + super(parent, modal); + _main_panel = ((MainPanelView) parent).getMain_panel(); + initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); - - _main_panel = ((MainPanelView) parent).getMain_panel(); + updateFonts(this.getRootPane(), DEFAULT_FONT, _main_panel.getZoom_factor()); smart_proxy_url_text.addMouseListener(new ContextMenuMouseListener()); @@ -78,6 +79,17 @@ public final class SettingsDialog extends javax.swing.JDialog { downloads_scroll_pane.getHorizontalScrollBar().setUnitIncrement(20); + String zoom_factor = DBTools.selectSettingValue("font_zoom"); + + int int_zoom_factor = Math.round(_main_panel.getZoom_factor() * 100); + + if (zoom_factor != null) { + int_zoom_factor = Integer.parseInt(zoom_factor); + } + + zoom_spinner.setModel(new SpinnerNumberModel(int_zoom_factor, 50, 200, 10)); + ((JSpinner.DefaultEditor) zoom_spinner.getEditor()).getTextField().setEditable(false); + String default_download_dir = DBTools.selectSettingValue("default_down_dir"); if (default_download_dir == null) { @@ -473,6 +485,8 @@ public final class SettingsDialog extends javax.swing.JDialog { _settings_ok = false; + pack(); + } /** @@ -563,6 +577,10 @@ public final class SettingsDialog extends javax.swing.JDialog { proxy_pass_textfield = new javax.swing.JPasswordField(); import_settings_button = new javax.swing.JButton(); export_settings_button = new javax.swing.JButton(); + jSeparator9 = new javax.swing.JSeparator(); + zoom_label = new javax.swing.JLabel(); + zoom_spinner = new javax.swing.JSpinner(); + rec_zoom_label = new javax.swing.JLabel(); status = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); @@ -707,23 +725,23 @@ public final class SettingsDialog extends javax.swing.JDialog { .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() - .addComponent(max_downloads_label, javax.swing.GroupLayout.PREFERRED_SIZE, 359, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(max_downloads_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(max_downloads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(27, 27, 27) - .addComponent(use_mega_label, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(use_mega_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, 569, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(27, 27, 27) - .addComponent(default_slots_down_label, javax.swing.GroupLayout.PREFERRED_SIZE, 346, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(default_slots_down_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(default_slots_down_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(27, 27, 27) .addComponent(megacrypter_reverse_port_label) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(megacrypter_reverse_port_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() @@ -734,12 +752,10 @@ public final class SettingsDialog extends javax.swing.JDialog { .addComponent(multi_slot_down_checkbox) .addComponent(use_mega_account_down_checkbox) .addComponent(verify_file_down_checkbox) + .addComponent(limit_download_speed_checkbox) .addGroup(jPanel3Layout.createSequentialGroup() - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(limit_download_speed_checkbox) - .addGroup(jPanel3Layout.createSequentialGroup() - .addGap(15, 15, 15) - .addComponent(max_down_speed_label, javax.swing.GroupLayout.PREFERRED_SIZE, 294, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(15, 15, 15) + .addComponent(max_down_speed_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(max_down_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(megacrypter_reverse_warning_label) @@ -755,7 +771,7 @@ public final class SettingsDialog extends javax.swing.JDialog { .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(33, 33, 33) - .addComponent(smart_proxy_url_label, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(smart_proxy_url_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(smart_proxy_url_text)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() @@ -845,7 +861,7 @@ public final class SettingsDialog extends javax.swing.JDialog { downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(downloads_panelLayout.createSequentialGroup() .addContainerGap() - .addComponent(downloads_scroll_pane, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE) + .addComponent(downloads_scroll_pane, javax.swing.GroupLayout.DEFAULT_SIZE, 478, Short.MAX_VALUE) .addContainerGap()) ); @@ -900,7 +916,7 @@ public final class SettingsDialog extends javax.swing.JDialog { .addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(uploads_panelLayout.createSequentialGroup() .addGap(21, 21, 21) - .addComponent(default_slots_up_label, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(default_slots_up_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(default_slots_up_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) @@ -911,15 +927,15 @@ public final class SettingsDialog extends javax.swing.JDialog { .addGroup(uploads_panelLayout.createSequentialGroup() .addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(uploads_panelLayout.createSequentialGroup() - .addComponent(max_uploads_label, javax.swing.GroupLayout.PREFERRED_SIZE, 303, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(max_uploads_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(max_uploads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(rec_upload_slots_label) .addComponent(multi_slot_up_checkbox) .addGroup(uploads_panelLayout.createSequentialGroup() .addGap(21, 21, 21) - .addComponent(max_up_speed_label, javax.swing.GroupLayout.PREFERRED_SIZE, 243, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(3, 3, 3) + .addComponent(max_up_speed_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(max_up_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(limit_upload_speed_checkbox)) .addGap(0, 361, Short.MAX_VALUE))) @@ -950,7 +966,7 @@ public final class SettingsDialog extends javax.swing.JDialog { .addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(max_up_speed_label) .addComponent(max_up_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(278, Short.MAX_VALUE)) + .addContainerGap(282, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Uploads", uploads_panel); @@ -974,7 +990,7 @@ public final class SettingsDialog extends javax.swing.JDialog { }); mega_accounts_table.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); mega_accounts_table.setDoubleBuffered(true); - mega_accounts_table.setRowHeight(24); + mega_accounts_table.setRowHeight((int)(24*_main_panel.getZoom_factor())); mega_accounts_scrollpane.setViewportView(mega_accounts_table); mega_accounts_label.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N @@ -1047,7 +1063,7 @@ public final class SettingsDialog extends javax.swing.JDialog { return types [columnIndex]; } }); - elc_accounts_table.setRowHeight(24); + elc_accounts_table.setRowHeight((int)(24*_main_panel.getZoom_factor())); elc_accounts_scrollpane.setViewportView(elc_accounts_table); elc_accounts_label.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N @@ -1122,7 +1138,7 @@ public final class SettingsDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(mega_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 133, Short.MAX_VALUE) + .addComponent(mega_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 137, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(accounts_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(remove_mega_account_button) @@ -1130,7 +1146,7 @@ public final class SettingsDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(elc_accounts_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(elc_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 133, Short.MAX_VALUE) + .addComponent(elc_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(accounts_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(remove_elc_account_button) @@ -1164,7 +1180,7 @@ public final class SettingsDialog extends javax.swing.JDialog { proxy_port_textfield.addMouseListener(new ContextMenuMouseListener()); use_proxy_checkbox.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N - use_proxy_checkbox.setText("Use HTTP(S) PROXY (app restart required)"); + use_proxy_checkbox.setText("Use HTTP(S) PROXY"); use_proxy_checkbox.setDoubleBuffered(true); use_proxy_checkbox.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { @@ -1173,7 +1189,7 @@ public final class SettingsDialog extends javax.swing.JDialog { }); proxy_warning_label.setFont(new java.awt.Font("Dialog", 2, 14)); // NOI18N - proxy_warning_label.setText("WARNING: Megabasterd will use this proxy for ALL connections."); + proxy_warning_label.setText("Note: Megabasterd will use this proxy for ALL connections (restart required)."); proxy_warning_label.setEnabled(false); proxy_auth_panel.setBorder(javax.swing.BorderFactory.createTitledBorder("Authentication")); @@ -1265,7 +1281,7 @@ public final class SettingsDialog extends javax.swing.JDialog { .addContainerGap()) ); - import_settings_button.setFont(new java.awt.Font("Dialog", 1, 22)); // NOI18N + import_settings_button.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N import_settings_button.setText("IMPORT SETTINGS"); import_settings_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1273,7 +1289,7 @@ public final class SettingsDialog extends javax.swing.JDialog { } }); - export_settings_button.setFont(new java.awt.Font("Dialog", 1, 22)); // NOI18N + export_settings_button.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N export_settings_button.setText("EXPORT SETTINGS"); export_settings_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1281,6 +1297,14 @@ public final class SettingsDialog extends javax.swing.JDialog { } }); + zoom_label.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N + zoom_label.setText("Font ZOOM (%):"); + + zoom_spinner.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N + + rec_zoom_label.setFont(new java.awt.Font("Dialog", 2, 14)); // NOI18N + rec_zoom_label.setText("Note: restart required."); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( @@ -1289,10 +1313,19 @@ public final class SettingsDialog extends javax.swing.JDialog { .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(proxy_panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addComponent(import_settings_button) + .addComponent(jSeparator9) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() + .addComponent(zoom_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(zoom_spinner)) + .addComponent(import_settings_button)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(export_settings_button))) + .addComponent(export_settings_button)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(rec_zoom_label) + .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( @@ -1300,7 +1333,15 @@ public final class SettingsDialog extends javax.swing.JDialog { .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(proxy_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 248, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSeparator9, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(5, 5, 5) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(zoom_label) + .addComponent(zoom_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(rec_zoom_label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 181, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(export_settings_button) .addComponent(import_settings_button)) @@ -1322,10 +1363,10 @@ public final class SettingsDialog extends javax.swing.JDialog { .addComponent(jTabbedPane1) .addGroup(layout.createSequentialGroup() .addComponent(status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(548, 548, 548) + .addComponent(save_button) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(save_button, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(cancel_button, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(cancel_button))) .addContainerGap()) ); layout.setVerticalGroup( @@ -1364,6 +1405,8 @@ public final class SettingsDialog extends javax.swing.JDialog { default_dir_label.setText(truncateText(_download_path, 80)); } + + pack(); }//GEN-LAST:event_change_download_dir_buttonActionPerformed private void cancel_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancel_buttonActionPerformed @@ -1403,6 +1446,15 @@ public final class SettingsDialog extends javax.swing.JDialog { settings.put("smart_proxy", smart_proxy_checkbox.isSelected() ? "yes" : "no"); settings.put("smart_proxy_url", smart_proxy_url_text.getText()); + String old_zoom = DBTools.selectSettingValue("font_zoom"); + + if (old_zoom == null) { + + old_zoom = ""; + } + + String zoom = String.valueOf(zoom_spinner.getValue()); + boolean old_use_proxy = false; String use_proxy_val = DBTools.selectSettingValue("use_proxy"); @@ -1454,10 +1506,16 @@ public final class SettingsDialog extends javax.swing.JDialog { settings.put("proxy_port", proxy_port); settings.put("proxy_user", proxy_user); settings.put("proxy_pass", proxy_pass); + settings.put("font_zoom", zoom); insertSettingsValues(settings); - if (use_proxy != old_use_proxy || !proxy_host.equals(old_proxy_host) || !proxy_port.equals(old_proxy_port) || !proxy_user.equals(old_proxy_user) || !proxy_pass.equals(old_proxy_pass)) { + if (!zoom.equals(old_zoom) + || use_proxy != old_use_proxy + || !proxy_host.equals(old_proxy_host) + || !proxy_port.equals(old_proxy_port) + || !proxy_user.equals(old_proxy_user) + || !proxy_pass.equals(old_proxy_pass)) { _main_panel.setRestart(true); } @@ -2371,6 +2429,7 @@ public final class SettingsDialog extends javax.swing.JDialog { private javax.swing.JSeparator jSeparator6; private javax.swing.JSeparator jSeparator7; private javax.swing.JSeparator jSeparator8; + private javax.swing.JSeparator jSeparator9; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JCheckBox limit_download_speed_checkbox; private javax.swing.JCheckBox limit_upload_speed_checkbox; @@ -2405,6 +2464,7 @@ public final class SettingsDialog extends javax.swing.JDialog { private javax.swing.JLabel rec_download_slots_label; private javax.swing.JLabel rec_smart_proxy_label; private javax.swing.JLabel rec_upload_slots_label; + private javax.swing.JLabel rec_zoom_label; private javax.swing.JButton remove_elc_account_button; private javax.swing.JButton remove_mega_account_button; private javax.swing.JButton save_button; @@ -2419,5 +2479,7 @@ public final class SettingsDialog extends javax.swing.JDialog { private javax.swing.JLabel use_mega_label; private javax.swing.JCheckBox use_proxy_checkbox; private javax.swing.JCheckBox verify_file_down_checkbox; + private javax.swing.JLabel zoom_label; + private javax.swing.JSpinner zoom_spinner; // End of variables declaration//GEN-END:variables } diff --git a/src/megabasterd/StreamerDialog.form b/src/megabasterd/StreamerDialog.form index 6b78a4c4a..452ded231 100644 --- a/src/megabasterd/StreamerDialog.form +++ b/src/megabasterd/StreamerDialog.form @@ -50,7 +50,7 @@ - + diff --git a/src/megabasterd/StreamerDialog.java b/src/megabasterd/StreamerDialog.java index c44855175..18bc488c7 100644 --- a/src/megabasterd/StreamerDialog.java +++ b/src/megabasterd/StreamerDialog.java @@ -47,13 +47,14 @@ public final class StreamerDialog extends javax.swing.JDialog implements Clipboa * @param clipboardspy */ public StreamerDialog(java.awt.Frame parent, boolean modal, ClipboardSpy clipboardspy) { + super(parent, modal); + _main_panel = ((MainPanelView) parent).getMain_panel(); + initComponents(); - updateFonts(this.getRootPane(), DEFAULT_FONT, ZOOM_FACTOR); - - _main_panel = ((MainPanelView) parent).getMain_panel(); + updateFonts(this.getRootPane(), DEFAULT_FONT, _main_panel.getZoom_factor()); _clipboardspy = clipboardspy; @@ -75,6 +76,7 @@ public final class StreamerDialog extends javax.swing.JDialog implements Clipboa use_mega_account_down_label.setVisible(false); } + pack(); } /** @@ -149,7 +151,7 @@ public final class StreamerDialog extends javax.swing.JDialog implements Clipboa .addComponent(original_link_textfield, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(dance_button, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(dance_button) .addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(use_mega_account_down_label)) .addContainerGap()) diff --git a/src/megabasterd/TransferenceManager.java b/src/megabasterd/TransferenceManager.java index 8f20bcc6a..5784ad11b 100644 --- a/src/megabasterd/TransferenceManager.java +++ b/src/megabasterd/TransferenceManager.java @@ -31,15 +31,16 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea private int _max_running_trans; private final MainPanel _main_panel; private final Object _secure_notify_lock; - private final Object _pre_lock; + private final Object _pre_count_lock; + private final Object _queue_flag_lock; private boolean _notified; private volatile boolean _removing_transferences; private volatile boolean _provisioning_transferences; private volatile boolean _starting_transferences; private volatile boolean _preprocessing_transferences; private volatile int _pre_count; - private volatile boolean _tray_icon_finish; - protected volatile long _total_transferences_size; + private boolean _tray_icon_finish; + protected long _total_transferences_size; public TransferenceManager(MainPanel main_panel, int max_running_trans, javax.swing.JLabel status, javax.swing.JPanel scroll_panel, javax.swing.JButton close_all_button, javax.swing.JButton pause_all_button, javax.swing.MenuElement clean_all_menu) { _notified = false; @@ -58,7 +59,8 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea _clean_all_menu = clean_all_menu; _total_transferences_size = 0L; _secure_notify_lock = new Object(); - _pre_lock = new Object(); + _pre_count_lock = new Object(); + _queue_flag_lock = new Object(); _transference_waitstart_queue = new ConcurrentLinkedQueue<>(); _transference_provision_queue = new ConcurrentLinkedQueue<>(); _transference_remove_queue = new ConcurrentLinkedQueue<>(); @@ -72,11 +74,17 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea abstract public void remove(Transference[] transference); public boolean isRemoving_transferences() { - return _removing_transferences; + + synchronized (_queue_flag_lock) { + return _removing_transferences; + } } public void setRemoving_transferences(boolean removing) { - _removing_transferences = removing; + + synchronized (_queue_flag_lock) { + _removing_transferences = removing; + } } public long getTotal_transferences_size() { @@ -84,23 +92,41 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea } public boolean isProvisioning_transferences() { - return _provisioning_transferences; + + synchronized (_queue_flag_lock) { + return _provisioning_transferences; + } + } public void setProvisioning_transferences(boolean provisioning) { - _provisioning_transferences = provisioning; + + synchronized (_queue_flag_lock) { + _provisioning_transferences = provisioning; + } + } public boolean isStarting_transferences() { - return _starting_transferences; + + synchronized (_queue_flag_lock) { + return _starting_transferences; + } } public void setStarting_transferences(boolean starting) { - _starting_transferences = starting; + + synchronized (_queue_flag_lock) { + _starting_transferences = starting; + } } public void setPreprocessing_transferences(boolean preprocessing) { - _preprocessing_transferences = preprocessing; + + synchronized (_queue_flag_lock) { + _preprocessing_transferences = preprocessing; + } + } public ConcurrentLinkedQueue getTransference_preprocess_queue() { @@ -109,7 +135,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea public void addPre_count(int pre_count) { - synchronized (_pre_lock) { + synchronized (_pre_count_lock) { _pre_count += pre_count; @@ -160,7 +186,11 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea } public boolean isPreprocessing_transferences() { - return _preprocessing_transferences; + + synchronized (_queue_flag_lock) { + return _preprocessing_transferences; + } + } public ConcurrentLinkedQueue getTransference_provision_queue() { @@ -423,6 +453,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea } if (!isRemoving_transferences() && !isStarting_transferences() && !getTransference_waitstart_queue().isEmpty() && getTransference_running_list().size() < _max_running_trans) { + setStarting_transferences(true); THREAD_POOL.execute(new Runnable() { @@ -442,14 +473,13 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea setStarting_transferences(false); secureNotify(); - } }); } - _updateView(); - secureWait(); + + _updateView(); } } diff --git a/src/megabasterd/UploadView.java b/src/megabasterd/UploadView.java index 312f0c2f5..cdae8d477 100644 --- a/src/megabasterd/UploadView.java +++ b/src/megabasterd/UploadView.java @@ -78,7 +78,7 @@ public final class UploadView extends javax.swing.JPanel implements Transference initComponents(); - updateFonts(this, DEFAULT_FONT, ZOOM_FACTOR); + updateFonts(this, DEFAULT_FONT, upload.getMain_panel().getZoom_factor()); _upload = upload; @@ -86,17 +86,18 @@ public final class UploadView extends javax.swing.JPanel implements Transference ((JSpinner.DefaultEditor) slots_spinner.getEditor()).getTextField().setEditable(false); - for (JComponent c : new JComponent[]{slots_spinner, slots_label, pause_button, stop_button, speed_label, progress_pbar, file_name_label, close_button, restart_button, file_size_label}) { - - c.setVisible(false); - } - speed_label.setForeground(new Color(0, 128, 255)); progress_pbar.setMinimum(0); progress_pbar.setMaximum(MAX_VALUE); progress_pbar.setStringPainted(true); + status_label.setText(""); + + for (JComponent c : new JComponent[]{slots_spinner, slots_label, pause_button, stop_button, speed_label, progress_pbar, file_name_label, close_button, restart_button, file_size_label}) { + + c.setVisible(false); + } } /**