Lay out the Options dialog like TeamSpeak 3's
A sidebar of pages with large icons replaces the tabs, and each page opens under a banner with its title, subtitle and icon. OK, Cancel and Apply sit below, and the dialog reopens on the last page used. The pages follow TS3's: Application (muted-microphone warning, reported client version), myTeamSpeak, Playback, Capture, Design, Hotkeys, Contacts, Chat and Notifications. Capture now holds everything from the microphone to the server: the device and gain, activation with the microphone test, signal processing and the encoder, laid out in one grid so its columns line up. Forms are grouped under section headings. Cancel now goes back to what was last applied, and closing the window cancels too, so a theme or icon pack being tried out is put back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,6 @@ import javax.swing.JPanel;
|
||||
import javax.swing.JTextField;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.Insets;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
@@ -34,10 +33,6 @@ final class ChatLogsPanel extends FormPanel {
|
||||
enabled.setSelected(settings.chatLogs);
|
||||
enabled.setToolTipText("Write every chat to disk and show its history when it opens again");
|
||||
enabled.addActionListener(e -> updateEnabled());
|
||||
c.gridx = 0;
|
||||
c.gridy = 0;
|
||||
c.gridwidth = 2;
|
||||
add(enabled, c);
|
||||
|
||||
folder.setText(settings.chatLogDir);
|
||||
folder.putClientProperty("JTextField.placeholderText", "The TeamSpeak 3 client's folder");
|
||||
@@ -45,24 +40,26 @@ final class ChatLogsPanel extends FormPanel {
|
||||
+ AppDirs.chatLogs() + "</html>");
|
||||
limitWidth(folder, FIELD_WIDTH);
|
||||
browse.addActionListener(e -> browseForFolder());
|
||||
JPanel row = new JPanel(new BorderLayout(UIScale.scale(6), 0));
|
||||
row.add(folder, BorderLayout.CENTER);
|
||||
row.add(browse, BorderLayout.EAST);
|
||||
addRow(this, c, 1, new JLabel("Folder:"), row);
|
||||
JPanel folderRow = new JPanel(new BorderLayout(UIScale.scale(6), 0));
|
||||
folderRow.add(folder, BorderLayout.CENTER);
|
||||
folderRow.add(browse, BorderLayout.EAST);
|
||||
|
||||
c.gridy = 2;
|
||||
c.gridx = 1;
|
||||
c.anchor = GridBagConstraints.NORTHWEST;
|
||||
add(new JLabel("Takes effect on the next connect."), c);
|
||||
JLabel nextConnect = new JLabel("Takes effect on the next connect.");
|
||||
nextConnect.setEnabled(false);
|
||||
|
||||
pictures.setSelected(settings.descriptionPictures);
|
||||
pictures.setToolTipText("Off: only links to them, nothing fetched");
|
||||
c.gridy = 3;
|
||||
c.gridx = 0;
|
||||
c.gridwidth = 2;
|
||||
c.weighty = 1;
|
||||
c.insets = new Insets(UIScale.scale(12), c.insets.left, c.insets.bottom, c.insets.right);
|
||||
add(pictures, c);
|
||||
|
||||
int row = 0;
|
||||
addSection(this, c, row++, "Logging");
|
||||
addWide(this, c, row++, enabled);
|
||||
addRow(this, c, row++, new JLabel("Folder:"), folderRow);
|
||||
c.gridx = 1;
|
||||
c.gridy = row++;
|
||||
add(nextConnect, c);
|
||||
addSection(this, c, row++, "Descriptions");
|
||||
addWide(this, c, row++, pictures);
|
||||
addFiller(this, c, row);
|
||||
updateEnabled();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user