PageRenderTime 88ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/RedBullPlayer/Modules/StateDisplay/DiskSpacePresenter.cpp

https://github.com/baoping/Red-Bull-Media-Player
C++ | 117 lines | 83 code | 17 blank | 17 comment | 2 complexity | d60d3e5f91e39f7eecbb871fcbbc0dd5 MD5 | raw file
  1. /*
  2. * Red Bull Media Player
  3. * Copyright (C) 2011, Red Bull
  4. *
  5. * This program is free software: you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation, either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. #include "DiskSpacePresenter.h"
  19. #include <QDesktopServices>
  20. #include <QDir>
  21. #include "../../Container/Constants.h"
  22. #include "../../ToolLib/SimpleLogger.h"
  23. #include "../../ToolLib/ConfigManager.h"
  24. #include "../../ToolLib/UuidCreator.h"
  25. #include "TaskViewFactory.h"
  26. using namespace RedBullPlayer::Modules::StateDisplay;
  27. using namespace RedBullPlayer::Modules::TaskManager;
  28. using namespace RedBullPlayer::Container;
  29. using namespace RedBullPlayer::Tools;
  30. DiskSpacePresenter::DiskSpacePresenter( IStateView* view, IDiskSpaceModel* model, ITaskViewFactory* taskViewFactory, QObject *parent )
  31. : IDiskSpacePresenter( parent ) {
  32. _guid = RedBullPlayer::Tools::UuidCreator::create();
  33. _viewGuid = RedBullPlayer::Tools::UuidCreator::create();
  34. SimpleLogger::instance()->debug( Constants::LOGGER_STATEDISPLAY,
  35. QString( "DiskSpacePresenter: Create new Presenter: %1" )
  36. .arg( _guid ) );
  37. _view = view;
  38. _model = model;
  39. _taskViewFactory = taskViewFactory;
  40. TaskInfo taskInfo;
  41. taskInfo.first = _viewGuid;
  42. taskInfo.second = QString( "%1 of %2 free." ).arg( _model->freeSpaceString() ).arg( _model->maximumSpaceString() );
  43. ITaskView* taskView = _taskViewFactory->createViewFor( taskInfo, _view );
  44. taskView->hideCancelButton();
  45. _view->append( taskView );
  46. bootstrap();
  47. }
  48. DiskSpacePresenter::~DiskSpacePresenter() {
  49. }
  50. void DiskSpacePresenter::bootstrap() {
  51. connect( _view, SIGNAL( cancelAllClicked() ), this, SLOT( cancelAllClicked() ) );
  52. connect( _view, SIGNAL( mouseEnter() ), this, SLOT( mouseEnterView() ) );
  53. connect( _view, SIGNAL( mouseLeave() ), this, SLOT( mouseLeaveView() ) );
  54. _viewTimer = new QTimer( this );
  55. _viewTimer->setSingleShot( true );
  56. connect( _viewTimer, SIGNAL( timeout() ), this, SLOT( viewTimerTimeout() ) );
  57. _viewTimer->setInterval( Constants::STATUSDISPLAY_HOVERBOX_HIDE_TIMEOUT );
  58. }
  59. void DiskSpacePresenter::viewTimerTimeout() {
  60. _view->hide();
  61. }
  62. void DiskSpacePresenter::mouseEnterView() {
  63. if ( _viewTimer->isActive() )
  64. _viewTimer->stop();
  65. }
  66. void DiskSpacePresenter::mouseLeaveView() {
  67. if ( !_viewTimer->isActive() )
  68. _viewTimer->start();
  69. }
  70. void DiskSpacePresenter::showView( int x, int y ) {
  71. SimpleLogger::instance()->debug( Constants::LOGGER_STATEDISPLAY,
  72. QString( "DiskSpacePresenter (%1) show View." )
  73. .arg( _guid ) );
  74. _view->updateText( _viewGuid, QString( "%1 of %2 free." ).arg( _model->freeSpaceString() ).arg( _model->maximumSpaceString() ) );
  75. _view->show( x, y );
  76. _viewTimer->start();
  77. }
  78. void DiskSpacePresenter::hideView() {
  79. SimpleLogger::instance()->debug( Constants::LOGGER_STATEDISPLAY,
  80. QString( "DiskSpacePresenter (%1) hide View." )
  81. .arg( _guid ) );
  82. _view->hide();
  83. }
  84. bool DiskSpacePresenter::isViewVisible() {
  85. return _view->isVisible();
  86. }
  87. void DiskSpacePresenter::removeView( QUuid taskId ) {
  88. _view->remove( taskId );
  89. }
  90. void DiskSpacePresenter::cancelAllClicked() {
  91. SimpleLogger::instance()->debug( Constants::LOGGER_STATEDISPLAY,
  92. QString( "DiskSpacePresenter (%1) Show Media clicked." )
  93. .arg( _guid ) );
  94. QDir dir( ConfigManager::instance()->getMediaDirectory() );
  95. QString path = dir.absolutePath();
  96. path = path.prepend( "file:///" );
  97. QUrl url( path, QUrl::TolerantMode );
  98. QDesktopServices::openUrl( url );
  99. hideView();
  100. }