File indexing completed on 2024-04-14 14:59:40

0001 /* AUDEX CDDA EXTRACTOR
0002  * SPDX-FileCopyrightText: Copyright (C) 2007 Marco Nelles
0003  * <https://userbase.kde.org/Audex>
0004  *
0005  * SPDX-License-Identifier: GPL-3.0-or-later
0006  */
0007 
0008 #ifndef MAINWINDOW_H
0009 #define MAINWINDOW_H
0010 
0011 #include <QComboBox>
0012 #include <QDockWidget>
0013 #include <QInputDialog>
0014 #include <QLabel>
0015 #include <QObject>
0016 #include <QTreeView>
0017 
0018 #include <KActionCollection>
0019 #include <KCDDB/CDInfo>
0020 #include <KCDDB/Client>
0021 #include <KCDDB/KCDDB>
0022 #include <KCModuleLoader>
0023 #include <KComboBox>
0024 #include <KConfigDialog>
0025 #include <KLocalizedString>
0026 #include <KMessageBox>
0027 #include <KStandardAction>
0028 #include <KTextEdit>
0029 #include <KXmlGuiWindow>
0030 #include <QLineEdit>
0031 #include <QPushButton>
0032 #include <QStatusBar>
0033 
0034 #include "utils/cuesheetwriter.h"
0035 #include "utils/error.h"
0036 
0037 #include "models/cddamodel.h"
0038 #include "models/profilemodel.h"
0039 
0040 #include "preferences.h"
0041 #include "widgets/cddaheaderwidget.h"
0042 #include "widgets/devicewidget.h"
0043 #include "widgets/generalsettingswidget.h"
0044 #include "widgets/profilewidget.h"
0045 #include "widgets/remoteserversettingswidget.h"
0046 
0047 #include "dialogs/errordialog.h"
0048 #include "dialogs/extractingprogressdialog.h"
0049 
0050 #include "utils/encoderassistant.h"
0051 
0052 class MainWindow : public KXmlGuiWindow
0053 {
0054     Q_OBJECT
0055 
0056 public:
0057     explicit MainWindow(QWidget *parent = nullptr);
0058     ~MainWindow() override;
0059 
0060 private:
0061     bool firstStart();
0062 
0063 private Q_SLOTS:
0064     void eject();
0065     void cddb_lookup();
0066     void cddb_submit();
0067     void rip();
0068     void configure();
0069     void edit();
0070 
0071     void new_audio_disc_detected();
0072     void audio_disc_removed();
0073 
0074     void cddb_lookup_start();
0075     void cddb_lookup_done(const bool successful);
0076 
0077     void update_layout();
0078 
0079     void enable_layout(bool enabled);
0080     void enable_cddb_submit(bool enabled = true);
0081     void disable_cddb_submit();
0082 
0083     void configuration_updated(const QString &dialog_name);
0084 
0085     void current_profile_updated_from_ui(int row);
0086     void update_profile_action(int index);
0087     void update_profile_action();
0088 
0089     void split_titles();
0090     void swap_artists_and_titles();
0091     void capitalize();
0092     void auto_fill_artists();
0093     void toggle(const QModelIndex &idx);
0094     void resizeColumns();
0095 
0096     void select_all();
0097     void select_none();
0098     void invert_selection();
0099 
0100     void cdda_context_menu(const QPoint &pos);
0101 
0102     void selection_changed(const int num_selected);
0103 
0104 private:
0105     CDDAModel *cdda_model;
0106     ProfileModel *profile_model;
0107 
0108     QLabel *profile_label;
0109     KComboBox *profile_combobox;
0110 
0111     void setup_actions();
0112     void setup_layout();
0113 
0114     QTreeView *cdda_tree_view;
0115 
0116     QDockWidget *cdda_header_dock;
0117     CDDAHeaderWidget *cdda_header_widget;
0118 
0119     bool layout_enabled;
0120 
0121     int current_profile_index;
0122     void set_profile(int profile_index);
0123 
0124     deviceWidget *device_widget;
0125 };
0126 
0127 #endif