* 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, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef PULSEVIEW_PV_WIDGETS_DEVICETOOLBUTTON_H
-#define PULSEVIEW_PV_WIDGETS_DEVICETOOLBUTTON_H
+#ifndef PULSEVIEW_PV_WIDGETS_DEVICETOOLBUTTON_HPP
+#define PULSEVIEW_PV_WIDGETS_DEVICETOOLBUTTON_HPP
#include <list>
#include <memory>
#include <QSignalMapper>
#include <QToolButton>
-struct srd_decoder;
+using std::list;
+using std::shared_ptr;
+using std::vector;
+using std::weak_ptr;
-namespace sigrok {
-class Device;
-}
+struct srd_decoder;
namespace pv {
class DeviceManager;
+namespace devices {
+class Device;
+}
+
namespace widgets {
class DeviceToolButton : public QToolButton
/**
* Returns a reference to the selected device.
*/
- std::shared_ptr<sigrok::Device> selected_device();
+ shared_ptr<devices::Device> selected_device();
/**
* Sets the current list of devices.
* @param selected_device the currently active device.
*/
void set_device_list(
- const std::list< std::shared_ptr<sigrok::Device> > &devices,
- std::shared_ptr<sigrok::Device> selected);
+ const list< shared_ptr<devices::Device> > &devices,
+ shared_ptr<devices::Device> selected);
+
+ /**
+ * Sets the current device to "no device". Useful for when a selected
+ * device fails to open.
+ */
+ void reset();
private:
/**
private Q_SLOTS:
void on_action(QObject *action);
+ void on_menu_hovered(QAction *action);
+
+ void on_menu_hover_timeout();
+
Q_SIGNALS:
void device_selected();
QMenu menu_;
QSignalMapper mapper_;
- std::shared_ptr<sigrok::Device> selected_device_;
- std::vector< std::weak_ptr<sigrok::Device> > devices_;
+ shared_ptr<devices::Device> selected_device_;
+ vector< weak_ptr<devices::Device> > devices_;
+
+ QString device_tooltip_;
};
-} // widgets
-} // pv
+} // namespace widgets
+} // namespace pv
-#endif // PULSEVIEW_PV_WIDGETS_DEVICETOOLBUTTON_H
+#endif // PULSEVIEW_PV_WIDGETS_DEVICETOOLBUTTON_HPP