/* * MediathekView * Copyright (C) 2008 W. Xaver * W.Xaver[at]googlemail.com * http://zdfmediathk.sourceforge.net/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package mediathek.gui.dialog; import mediathek.config.Daten; import mediathek.config.MVConfig; import mediathek.daten.ListePset; import mediathek.daten.ListePsetVorlagen; import mediathek.gui.dialogEinstellungen.PanelEinstellungenGeo; import mediathek.gui.dialogEinstellungen.PanelProgrammPfade; import mediathek.gui.dialogEinstellungen.PanelPsetKurz; import mediathek.gui.dialogEinstellungen.PanelPsetLang; import mediathek.tool.GuiFunktionenProgramme; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import static mSearch.tool.Functions.getOs; @SuppressWarnings("serial") public class DialogStarteinstellungen extends JDialog { private final Daten daten; private final static int STAT_START = 1; private final static int STAT_PFAD = 2; private final static int STAT_PSET = 3; private final static int STAT_FERTIG = 4; private int status = STAT_START; private final JFrame parentComponent; private JCheckBox jCheckBox = new JCheckBox("Einmal am Tag nach einer neuen Programmversion suchen"); private boolean anpassen = false; public DialogStarteinstellungen(JFrame parent, Daten dd) { super(parent, true); parentComponent = parent; initComponents(); daten = dd; this.setTitle("Erster Start"); jButtonStandard.addActionListener((ActionEvent e) -> weiter()); jButtonAnpassen.addActionListener((ActionEvent e) -> { anpassen = true; weiter(); }); jCheckBoxAlleEinstellungen.setVisible(false); jCheckBoxAlleEinstellungen.addActionListener(e -> { status = STAT_PSET; weiter(); }); MVConfig.add(MVConfig.Configs.SYSTEM_UPDATE_SUCHEN, Boolean.TRUE.toString()); // setzt die Standardpfade für die wichtigsten Programme MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_VLC, GuiFunktionenProgramme.getMusterPfadVlc()); MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER, GuiFunktionenProgramme.getMusterPfadFlv()); MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FFMPEG, GuiFunktionenProgramme.getMusterPfadFFmpeg()); PanelEinstellungenGeo panelEinstellungenGeo = new PanelEinstellungenGeo(dd, parentComponent); jCheckBox = new JCheckBox("Einmal am Tag nach einer neuen Programmversion suchen"); jCheckBox.setSelected(true); jCheckBox.addActionListener(new BeobCheckBoxSuchen()); GroupLayout extraLayout = new javax.swing.GroupLayout(jPanelExtra); jPanelExtra.setLayout(extraLayout); extraLayout.setHorizontalGroup( extraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(extraLayout.createSequentialGroup() .addContainerGap() .addGroup(extraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelEinstellungenGeo) .addComponent(jCheckBox) ) .addContainerGap() )); extraLayout.setVerticalGroup( extraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(extraLayout.createSequentialGroup() .addContainerGap() .addComponent(panelEinstellungenGeo) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jCheckBox) .addContainerGap()) ); if (MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_VLC).isEmpty() || MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER).isEmpty() || MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FFMPEG).isEmpty()) { //dann fehlt eine Programm jButtonStandard.setEnabled(false); anpassen = true; } } private void weiter() { jButtonStandard.setEnabled(true); switch (status) { case STAT_START: statusStart(); break; case STAT_PFAD: statusPfade(); break; case STAT_PSET: statusPset(); break; default: beenden(); break; } } private void statusStart() { jButtonStandard.setText("Weiter"); if (MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_VLC).isEmpty() || MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER).isEmpty() || MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FFMPEG).isEmpty()) { // ein Programm (VLC, flvstreamer) wurde nicht gefunden, muss der Benutzer eintragen status = STAT_PFAD; } else if (anpassen) { // der Benutzer wills verstellen status = STAT_PFAD; } else // nur dann automatisch Standardprogramme einrichten, sonst fragen if (addStandarSet(parentComponent, daten)) { status = STAT_FERTIG; } else { status = STAT_PSET; } weiter(); } private void statusPfade() { // erst Programmpfad prüfen jButtonAnpassen.setVisible(false); jCheckBoxAlleEinstellungen.setVisible(false); switch (getOs()) { case MAC: case WIN32: case WIN64: // da wird nur der VLC gebraucht, der Rest wird mitgeliefert jScrollPane1.setViewportView(new PanelProgrammPfade(parentComponent, true /* vlc */, false /* flvstreamer */, false /*ffmpeg*/)); break; default: // da brauchs alles jScrollPane1.setViewportView(new PanelProgrammPfade(parentComponent, true /* vlc */, true /* flvstreamer */, true /*ffmpeg*/)); } status = STAT_PSET; jButtonStandard.setText("Weiter"); } private void statusPset() { // Einstellungen zum Ansehen und Speichern der Filme anpassen jButtonAnpassen.setVisible(false); jCheckBoxAlleEinstellungen.setVisible(true); if (Daten.listePset.isEmpty()) { // Standardset hinzufügen addStandarSet(parentComponent, daten); } if (jCheckBoxAlleEinstellungen.isSelected()) { jScrollPane1.setViewportView(new PanelPsetLang(daten, parentComponent, Daten.listePset)); } else { jScrollPane1.setViewportView(new PanelPsetKurz(daten, parentComponent, Daten.listePset)); } status = STAT_FERTIG; jButtonStandard.setText("Weiter"); } private boolean addStandarSet(JFrame parent, Daten daten) { boolean ret = false; ListePset pSet = ListePsetVorlagen.getStandarset(parent, daten, true /*replaceMuster*/); if (pSet != null) { Daten.listePset.addPset(pSet); MVConfig.add(MVConfig.Configs.SYSTEM_VERSION_PROGRAMMSET, pSet.version); ret = true; } return ret; } private void beenden() { this.dispose(); } // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { javax.swing.JPanel jPanel2 = new javax.swing.JPanel(); jButtonStandard = new javax.swing.JButton(); jCheckBoxAlleEinstellungen = new javax.swing.JCheckBox(); jButtonAnpassen = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jPanelExtra = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 255), 3)); jButtonStandard.setText("Mit Standardeinstellungen starten"); jCheckBoxAlleEinstellungen.setText("alle Einstellungen anzeigen"); jButtonAnpassen.setText("Einstellungen anpassen"); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jCheckBoxAlleEinstellungen) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonAnpassen) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonStandard) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButtonStandard) .addComponent(jCheckBoxAlleEinstellungen) .addComponent(jButtonAnpassen)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanelExtraLayout = new javax.swing.GroupLayout(jPanelExtra); jPanelExtra.setLayout(jPanelExtraLayout); jPanelExtraLayout.setHorizontalGroup( jPanelExtraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 788, Short.MAX_VALUE) ); jPanelExtraLayout.setVerticalGroup( jPanelExtraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 510, Short.MAX_VALUE) ); jScrollPane1.setViewportView(jPanelExtra); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 791, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1) .addGap(18, 18, 18) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonAnpassen; private javax.swing.JButton jButtonStandard; private javax.swing.JCheckBox jCheckBoxAlleEinstellungen; private javax.swing.JPanel jPanelExtra; private javax.swing.JScrollPane jScrollPane1; // End of variables declaration//GEN-END:variables private class BeobCheckBoxSuchen implements ActionListener { @Override public void actionPerformed(ActionEvent e) { MVConfig.add(MVConfig.Configs.SYSTEM_UPDATE_SUCHEN, Boolean.toString(jCheckBox.isSelected())); } } }