• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

okteta

  • sources
  • kde-4.12
  • kdesdk
  • okteta
  • kasten
  • controllers
  • view
  • viewprofiles
viewprofilecontroller.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the Okteta Kasten module, made within the KDE community.
3 
4  Copyright 2010,2012 Friedrich W. H. Kossebau <kossebau@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public
8  License as published by the Free Software Foundation; either
9  version 2.1 of the License, or (at your option) version 3, or any
10  later version accepted by the membership of KDE e.V. (or its
11  successor approved by the membership of KDE e.V.), which shall
12  act as a proxy defined in Section 6 of version 3 of the license.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public
20  License along with this library. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 #include "viewprofilecontroller.h"
24 
25 // controller
26 #include "viewprofileeditdialog.h"
27 // Okteta Gui Kasten
28 #include <bytearrayviewprofilemanager.h>
29 #include <bytearrayviewprofilesynchronizer.h>
30 #include <bytearrayview.h>
31 // KDE
32 #include <KXMLGUIClient>
33 #include <KXMLGUIFactory>
34 #include <KActionMenu>
35 #include <KActionCollection>
36 #include <KAction>
37 #include <KLocale>
38 
39 
40 namespace Kasten2
41 {
42 
43 ViewProfileController::ViewProfileController( ByteArrayViewProfileManager* viewProfileManager,
44  QWidget* parentWidget,
45  KXMLGUIClient* guiClient )
46  : AbstractXmlGuiController()
47  , mGuiClient( guiClient )
48  , mViewProfileManager( viewProfileManager )
49  , mParentWidget( parentWidget )
50  , mByteArrayView( 0 )
51  , mByteArrayViewProfileSynchronizer( 0 )
52 {
53  KActionCollection* actionCollection = guiClient->actionCollection();
54 
55  mViewProfileActionMenu = actionCollection->add<KActionMenu>( QLatin1String("view_profile") );
56  mViewProfileActionMenu->setDelayed( false );
57  mViewProfileActionMenu->setText( i18nc("@title:menu submenu to select the view profile or change it",
58  "View Profile") );
59 
60  mCreateNewAction =
61  new QAction( KIcon( QLatin1String("document-new") ),
62  i18nc("@title:menu create a new view profile",
63  "Create new..." ),
64  this );
65  connect( mCreateNewAction, SIGNAL(triggered(bool)), SLOT(onCreateNewActionTriggered()) );
66 
67  mSaveChangesAction =
68  new QAction( KIcon( QLatin1String("document-save") ),
69  i18nc("@title:menu save changed to the view profile to the base profile",
70  "Save changes" ),
71  this );
72  connect( mSaveChangesAction, SIGNAL(triggered(bool)), SLOT(onSaveChangesActionTriggered()) );
73 
74  mResetChangesAction =
75  new QAction( KIcon(QLatin1String("document-revert")),
76  i18nc("@title:menu reset settings back to those of the saved base profile",
77  "Reset changes" ),
78  this );
79  connect( mResetChangesAction, SIGNAL(triggered(bool)), SLOT(onResetChangesActionTriggered()) );
80 
81  mViewProfileActionMenu->addAction( mCreateNewAction );
82  mViewProfileActionMenu->addSeparator();
83  mViewProfileActionMenu->addAction( mSaveChangesAction );
84  mViewProfileActionMenu->addAction( mResetChangesAction );
85 
86  mViewProfilesActionGroup = new QActionGroup( this );
87  mViewProfilesActionGroup->setExclusive( true );
88  connect( mViewProfilesActionGroup, SIGNAL(triggered(QAction*)),
89  SLOT(onViewProfileTriggered(QAction*)) );
90 
91  connect( mViewProfileManager, SIGNAL(viewProfilesChanged(QList<Kasten2::ByteArrayViewProfile>)),
92  SLOT(onViewProfilesChanged()) );
93  connect( mViewProfileManager, SIGNAL(viewProfilesRemoved(QList<Kasten2::ByteArrayViewProfile::Id>)),
94  SLOT(onViewProfilesChanged()) );
95 
96  onViewProfilesChanged();
97 
98  setTargetModel( 0 );
99 }
100 
101 void ViewProfileController::setTargetModel( AbstractModel* model )
102 {
103  if( mByteArrayViewProfileSynchronizer )
104  mByteArrayViewProfileSynchronizer->disconnect( this );
105 
106  mByteArrayView = model ? model->findBaseModel<ByteArrayView*>() : 0;
107  mByteArrayViewProfileSynchronizer = mByteArrayView ? mByteArrayView->synchronizer() : 0;
108 
109  const bool hasSynchronizer = ( mByteArrayViewProfileSynchronizer != 0 );
110  if( hasSynchronizer )
111  {
112  onViewProfileChanged( mByteArrayViewProfileSynchronizer->viewProfileId() );
113 
114  connect( mByteArrayViewProfileSynchronizer, SIGNAL(viewProfileChanged(Kasten2::ByteArrayViewProfile::Id)),
115  SLOT(onViewProfileChanged(Kasten2::ByteArrayViewProfile::Id)) );
116 
117  onLocalSyncStateChanged( mByteArrayViewProfileSynchronizer->localSyncState() );
118 
119  connect( mByteArrayViewProfileSynchronizer, SIGNAL(localSyncStateChanged(Kasten2::LocalSyncState)),
120  SLOT(onLocalSyncStateChanged(Kasten2::LocalSyncState)) );
121  }
122  else
123  {
124  mSaveChangesAction->setEnabled( false );
125  mResetChangesAction->setEnabled( false );
126  }
127 
128  mCreateNewAction->setEnabled( hasSynchronizer );
129  mViewProfileActionMenu->setEnabled( hasSynchronizer );
130 }
131 
132 
133 void ViewProfileController::onViewProfileChanged( const Kasten2::ByteArrayViewProfile::Id& viewProfileId )
134 {
135  const QList<QAction*> actions = mViewProfilesActionGroup->actions();
136 
137  foreach( QAction* action, actions )
138  {
139  if( action->data().toString() == viewProfileId )
140  {
141  action->setChecked( true );
142  break;
143  }
144  }
145 }
146 
147 void ViewProfileController::onViewProfilesChanged()
148 {
149  qDeleteAll( mViewProfilesActionGroup->actions() );
150 
151  const QList<ByteArrayViewProfile> viewProfiles = mViewProfileManager->viewProfiles();
152  const ByteArrayViewProfile::Id currentViewProfileId = mByteArrayViewProfileSynchronizer ?
153  mByteArrayViewProfileSynchronizer->viewProfileId() :
154  ByteArrayViewProfile::Id();
155 
156  if( ! viewProfiles.isEmpty() )
157  mViewProfileActionMenu->addSeparator();
158 
159  bool isCurrentViewProfileExisting = false;
160  foreach( const ByteArrayViewProfile& viewProfile, viewProfiles )
161  {
162  const QString title = viewProfile.viewProfileTitle();
163  QAction* action = new QAction( title, mViewProfilesActionGroup );
164  action->setCheckable( true );
165  const ByteArrayViewProfile::Id viewProfileId = viewProfile.id();
166  action->setData( viewProfileId );
167  const bool isCurrentViewProfile = ( viewProfileId == currentViewProfileId );
168  action->setChecked( isCurrentViewProfile );
169  if( isCurrentViewProfile )
170  isCurrentViewProfileExisting = true;
171 
172  mViewProfilesActionGroup->addAction( action );
173  mViewProfileActionMenu->addAction( action );
174  }
175 
176  // reset id if no longer existing
177  if( ! isCurrentViewProfileExisting && mByteArrayViewProfileSynchronizer )
178  mByteArrayViewProfileSynchronizer->setViewProfileId( ByteArrayViewProfile::Id() );
179 }
180 
181 
182 
183 void ViewProfileController::onViewProfileTriggered( QAction* action )
184 {
185  mByteArrayViewProfileSynchronizer->setViewProfileId( action->data().toString() );
186 }
187 
188 void ViewProfileController::onLocalSyncStateChanged( Kasten2::LocalSyncState localSyncState )
189 {
190  const bool hasDifference = ( localSyncState == LocalHasChanges );
191 
192  mSaveChangesAction->setEnabled( hasDifference );
193  mResetChangesAction->setEnabled( hasDifference );
194 }
195 
196 void ViewProfileController::onCreateNewActionTriggered()
197 {
198  ViewProfileEditDialog* dialog = new ViewProfileEditDialog( mParentWidget );
199  const QString dialogTitle = i18nc( "@window:title",
200  "New View Profile" );
201  dialog->setWindowTitle( dialogTitle );
202 
203  ByteArrayViewProfile viewProfile;
204  viewProfile.setId( QString() );
205 // const QString modifiedTitle = i18n( "Modification of %1", newByteArrayViewProfile.viewProfileTitle() );
206 // viewProfile.setViewProfileTitle( modifiedTitle );
207  viewProfile.setOffsetColumnVisible( mByteArrayView->offsetColumnVisible() );
208  viewProfile.setVisibleByteArrayCodings( mByteArrayView->visibleByteArrayCodings() );
209  viewProfile.setViewModus( mByteArrayView->viewModus() );
210  viewProfile.setLayoutStyle( mByteArrayView->layoutStyle() );
211  viewProfile.setNoOfGroupedBytes( mByteArrayView->noOfGroupedBytes() );
212  viewProfile.setNoOfBytesPerLine( mByteArrayView->noOfBytesPerLine() );
213  viewProfile.setValueCoding( mByteArrayView->valueCoding() );
214  viewProfile.setCharCoding( mByteArrayView->charCodingName() );
215  viewProfile.setShowsNonprinting( mByteArrayView->showsNonprinting() );
216  viewProfile.setUndefinedChar( mByteArrayView->undefinedChar() );
217  viewProfile.setSubstituteChar( mByteArrayView->substituteChar() );
218  dialog->setViewProfile( viewProfile );
219 
220  const int answer = dialog->exec();
221 
222  if( answer == KDialog::Accepted )
223  {
224  QList<ByteArrayViewProfile> viewProfiles;
225  viewProfiles << dialog->viewProfile();
226  mViewProfileManager->saveViewProfiles( viewProfiles );
227 
228  mByteArrayViewProfileSynchronizer->setViewProfileId( viewProfiles.at(0).id() );
229  }
230 
231  delete dialog;
232 }
233 
234 void ViewProfileController::onResetChangesActionTriggered()
235 {
236  mByteArrayViewProfileSynchronizer->syncFromRemote();
237 }
238 
239 void ViewProfileController::onSaveChangesActionTriggered()
240 {
241  mByteArrayViewProfileSynchronizer->syncToRemote();
242 }
243 
244 }
Kasten2::ByteArrayView::showsNonprinting
bool showsNonprinting() const
Definition: bytearrayview.cpp:286
Kasten2::LocalSyncState
LocalSyncState
Definition: kastencore.h:33
Kasten2::ByteArrayView::viewModus
int viewModus() const
Definition: bytearrayview.cpp:409
Kasten2::ByteArrayView::valueCoding
int valueCoding() const
Definition: bytearrayview.cpp:250
Kasten2::ByteArrayViewProfile::Id
QString Id
Definition: bytearrayviewprofile.h:42
Kasten2::ByteArrayView::charCodingName
QString charCodingName() const
Definition: bytearrayview.cpp:255
Kasten2::ByteArrayView::noOfBytesPerLine
int noOfBytesPerLine() const
Definition: bytearrayview.cpp:244
Kasten2::ByteArrayViewProfileSynchronizer::syncFromRemote
void syncFromRemote()
Definition: bytearrayviewprofilesynchronizer.cpp:131
QWidget
bytearrayviewprofilemanager.h
Kasten2::ByteArrayView::synchronizer
ByteArrayViewProfileSynchronizer * synchronizer() const
Definition: bytearrayview.cpp:143
Kasten2::ByteArrayViewProfileManager::saveViewProfiles
void saveViewProfiles(QList< ByteArrayViewProfile > &viewProfiles)
Definition: bytearrayviewprofilemanager.cpp:236
Kasten2::ByteArrayView::visibleByteArrayCodings
int visibleByteArrayCodings() const
Definition: bytearrayview.cpp:306
Kasten2::ByteArrayViewProfileSynchronizer::viewProfileId
ByteArrayViewProfile::Id viewProfileId() const
Definition: bytearrayviewprofilesynchronizer.h:118
Kasten2::ByteArrayViewProfileManager::viewProfiles
QList< ByteArrayViewProfile > viewProfiles() const
Definition: bytearrayviewprofilemanager.cpp:182
Kasten2::ByteArrayViewProfileSynchronizer::setViewProfileId
void setViewProfileId(const ByteArrayViewProfile::Id &viewProfileId)
Definition: bytearrayviewprofilesynchronizer.cpp:67
viewprofilecontroller.h
Kasten2::ByteArrayView::noOfGroupedBytes
int noOfGroupedBytes() const
Definition: bytearrayview.cpp:382
Kasten2::ViewProfileController::ViewProfileController
ViewProfileController(ByteArrayViewProfileManager *viewProfileManager, QWidget *parentWidget, KXMLGUIClient *guiClient)
Definition: viewprofilecontroller.cpp:43
Kasten2::ByteArrayViewProfileSynchronizer::syncToRemote
void syncToRemote()
Definition: bytearrayviewprofilesynchronizer.cpp:112
Kasten2::ByteArrayView::undefinedChar
QChar undefinedChar() const
Definition: bytearrayview.cpp:373
Kasten2::AbstractModel::findBaseModel
T findBaseModel() const
returns the first baseModel which is of type T, or null if none is found.
Definition: abstractmodel.h:93
bytearrayviewprofilesynchronizer.h
Kasten2::ByteArrayView::substituteChar
QChar substituteChar() const
Definition: bytearrayview.cpp:369
Kasten2::ByteArrayViewProfileManager
Definition: bytearrayviewprofilemanager.h:65
Kasten2::ByteArrayView::offsetColumnVisible
bool offsetColumnVisible() const
Definition: bytearrayview.cpp:291
Kasten2::AbstractModel
Definition: abstractmodel.h:40
Kasten2::LocalHasChanges
Definition: kastencore.h:36
Kasten2::ByteArrayView::layoutStyle
int layoutStyle() const
Definition: bytearrayview.cpp:301
Kasten2::ByteArrayView
Definition: bytearrayview.h:51
viewprofileeditdialog.h
Kasten2::ViewProfileController::setTargetModel
virtual void setTargetModel(AbstractModel *model)
Definition: viewprofilecontroller.cpp:101
QList< Kasten2::ByteArrayViewProfile >
Kasten2::AbstractXmlGuiController
Definition: abstractxmlguicontroller.h:32
bytearrayview.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:09 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

okteta

Skip menu "okteta"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal